├── .gitignore
├── .mvn
└── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── LICENSE
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
├── java
│ └── top
│ │ └── fanfpy
│ │ └── xiaoyuanxianyu
│ │ ├── XiaoyuanxianyuApplication.java
│ │ ├── aspect
│ │ └── HttpAspect.java
│ │ ├── config
│ │ ├── AliOss.java
│ │ ├── Swagger2.java
│ │ └── WxMiniAppConfiguration.java
│ │ ├── entity
│ │ ├── Classification.java
│ │ ├── Comments.java
│ │ ├── Goods.java
│ │ ├── GoodsImg.java
│ │ └── User.java
│ │ ├── repository
│ │ ├── ClassificationRepository.java
│ │ ├── CommentsRepository.java
│ │ ├── GoodsImgRepository.java
│ │ ├── GoodsRepository.java
│ │ └── UserRepository.java
│ │ ├── service
│ │ ├── ClassificationService.java
│ │ ├── CommentsService.java
│ │ ├── GoodsImgService.java
│ │ ├── GoodsSrevice.java
│ │ ├── UserService.java
│ │ └── impl
│ │ │ ├── ClassificationServiceImpl.java
│ │ │ ├── CommentsServiceImpl.java
│ │ │ ├── GoodsImgServiceImpl.java
│ │ │ ├── GoodsServiceImpl.java
│ │ │ └── UserServiceImpl.java
│ │ ├── utils
│ │ └── ResultUtils.java
│ │ ├── vo
│ │ ├── ClassVO.java
│ │ ├── CommentsInfoVO.java
│ │ ├── GoodsInfoVO.java
│ │ ├── ResultVO.java
│ │ └── UserInfoVO.java
│ │ └── web
│ │ ├── CommentsController.java
│ │ ├── GoodsApiController.java
│ │ ├── GoodsImgApiController.java
│ │ ├── Index.java
│ │ └── UserApiController.java
└── resources
│ └── application.properties
└── test
└── java
└── top
└── fanfpy
└── xiaoyuanxianyu
├── XiaoyuanxianyuApplicationTests.java
└── repository
├── GoodsImgRepositoryTest.java
└── GoodsRepositoryTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | !.mvn/wrapper/maven-wrapper.jar
3 |
4 | ### STS ###
5 | .apt_generated
6 | .classpath
7 | .factorypath
8 | .project
9 | .settings
10 | .springBeans
11 | .sts4-cache
12 |
13 | mvnw
14 | mvnw.cmd
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /build/
25 | /nbbuild/
26 | /dist/
27 | /nbdist/
28 | /.nb-gradle/
29 | /fanfpylog/
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fanfpy/xiaoyuanxianyu/a5055700401fa7917c1ef42ea7f14d8d56555276/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.3/apache-maven-3.5.3-bin.zip
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 二手交易平台
2 | ### SpringBoot+Spring-Data-JPA
3 |
4 |
5 | #API描述
6 |
7 |
8 |
9 |
10 |
11 | **简要描述:**
12 |
13 | - 返回首页需要的数据 热门和最新商品
14 |
15 | **请求URL:**
16 | - ` https://2.fanfpy.top/xianyu/api/goods/new/{num} `
17 |
18 | ##### 热门商品同例
19 |
20 | - `https://2.fanfpy.top/xianyu/api/goods/hot/{num}`
21 |
22 | **请求方式:**
23 | - GET
24 |
25 | |参数名|必选|类型|说明|
26 | |:---- |:---|:----- |----- |
27 | |num |是 |Integer |列表数量 |
28 |
29 |
30 | **返回示例**
31 |
32 | ```
33 | {
34 | "code":0,
35 | "msg":"成功",
36 | "data":[
37 | {
38 | "goodsId": 1,
39 | "userId": 1,
40 | "userName":"fanfpy",
41 | "userImg":"https:xxx.com/xxx.jpg",
42 | "goodsTitlie":"小米mix2s",
43 | "price" : 2999.0,
44 | "date" "2018-05-03 22:39:26"
45 | "status":0,
46 | "pageView":2,
47 | "describle": "描述:一面科技一面艺术",
48 | "goodsImg":[
49 | "img":"https:xxx.com/xxx.jpg",
50 | "img":"https:xxx.com/xxx.jpg",
51 | "img":"https:xxx.com/xxx.jpg",
52 | ]
53 | },
54 | {
55 | "goodsId": 2,
56 | "userId": 1,
57 | "userName":"fanfpy",
58 | "userImg":"https:xxx.com/xxx.jpg",
59 | "goodsTitlie":"vivoX20",
60 | "price" : 3999.0,
61 | "date" "2018-05-03 14:22:16"
62 | "status":0,
63 | "pageView":2,
64 | "describle": "两千万柔光双摄,照亮你的美",
65 | "goodsImg":[
66 | "img":"https:xxx.com/xxx.jpg",
67 | "img":"https:xxx.com/xxx.jpg",
68 | "img":"https:xxx.com/xxx.jpg",
69 | ]
70 | }
71 | ]
72 | }
73 | ```
74 |
75 | **简要描述:**
76 | - 商品详细页
77 |
78 | **请求url**
79 |
80 | - `https://2.fanfpy.top/xianyu/api/goods/id/{id}`
81 |
82 | **请求类型**
83 |
84 | - GET
85 |
86 | 返回示例
87 |
88 | ```json
89 | {
90 | "code":0,
91 | "msg":"成功",
92 | "data":{
93 | "goodsId": 1,
94 | "userId": 1,
95 | "userName":"fanfpy",
96 | "userImg":"https:xxx.com/xxx.jpg",
97 | "goodsTitlie":"小米mix2s",
98 | "price" : 2999.0,
99 | "date" "2018-05-03 22:39:26"
100 | "status":0,
101 | "pageView":2,
102 | "describle": "描述:一面科技一面艺术",
103 | "goodsImg":[
104 | "img":"https:xxx.com/xxx.jpg",
105 | "img":"https:xxx.com/xxx.jpg",
106 | "img":"https:xxx.com/xxx.jpg",
107 | ]
108 | }
109 | }
110 | ```
111 |
112 | **通过分类id返回商品列表**
113 |
114 |
115 | **请求URL:**
116 | - ` http://2.fanfpy.top/xianyu/api/goods/class/{classId} `
117 |
118 | **请求方式:**
119 | - GET
120 |
121 | **参数:**
122 |
123 | |参数名|必选|类型|说明|
124 | |:---- |:---|:----- |----- |
125 | |classId |是 |Integer |分类id |
126 |
127 |
128 | **返回示例**
129 |
130 | ```
131 | {
132 | "code" :0,
133 | "msg":"成功",
134 | "data":[
135 | {
136 | "goodsId": 2,
137 | "userId": 1,
138 | "userName":"fanfpy",
139 | "userImg":"https:xxx.com/xxx.jpg",
140 | "goodsTitlie":"vivoX20",
141 | "price" : 3999.0,
142 | "date" "2018-05-03 14:22:16"
143 | "status":0,
144 | "pageView":2,
145 | "describle": "两千万柔光双摄,照亮你的美",
146 | "goodsImg":[
147 | "img":"https:xxx.com/xxx.jpg",
148 | "img":"https:xxx.com/xxx.jpg",
149 | "img":"https:xxx.com/xxx.jpg",
150 | ]
151 | },
152 | {
153 | "goodsId": 2,
154 | "userId": 1,
155 | "userName":"fanfpy",
156 | "userImg":"https:xxx.com/xxx.jpg",
157 | "goodsTitlie":"vivoX20",
158 | "price" : 3999.0,
159 | "date" "2018-05-03 14:22:16"
160 | "status":0,
161 | "pageView":2,
162 | "describle": "两千万柔光双摄,照亮你的美",
163 | "goodsImg":[
164 | "img":"https:xxx.com/xxx.jpg",
165 | "img":"https:xxx.com/xxx.jpg",
166 | "img":"https:xxx.com/xxx.jpg",
167 | ]
168 | }
169 | ]
170 | }
171 | }
172 | ```
173 |
174 | **添加商品**
175 |
176 | |参数名|必选|类型|说明|
177 | |:---- |:---|:----- |----- |
178 | |userId |是 |Integer |用户id |
179 | |classification |是 |Integer |分类id |
180 | |commentNum |是 |Integer |评论数 默认为空 |
181 | |describle |是 |String |商品描述 |
182 | |name |是 |String |价格 |
183 | |status |是 |Integer | 商品状态0为上架 1为下架 |
184 | |pageView |是 |Integer |查看数 默认为0 |
185 |
186 | **添加图片**
187 |
188 | |参数名|必选|类型|说明|
189 | |:---- |:---|:----- |----- |
190 | |goodsId |是 |Integer |商品id |
191 | |file |是 |file |上传的图片 |
192 |
193 |
194 |
--------------------------------------------------------------------------------
/mvnw:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # ----------------------------------------------------------------------------
3 | # Licensed to the Apache Software Foundation (ASF) under one
4 | # or more contributor license agreements. See the NOTICE file
5 | # distributed with this work for additional information
6 | # regarding copyright ownership. The ASF licenses this file
7 | # to you under the Apache License, Version 2.0 (the
8 | # "License"); you may not use this file except in compliance
9 | # with the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing,
14 | # software distributed under the License is distributed on an
15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 | # KIND, either express or implied. See the License for the
17 | # specific language governing permissions and limitations
18 | # under the License.
19 | # ----------------------------------------------------------------------------
20 |
21 | # ----------------------------------------------------------------------------
22 | # Maven2 Start Up Batch script
23 | #
24 | # Required ENV vars:
25 | # ------------------
26 | # JAVA_HOME - location of a JDK home dir
27 | #
28 | # Optional ENV vars
29 | # -----------------
30 | # M2_HOME - location of maven2's installed home dir
31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven
32 | # e.g. to debug Maven itself, use
33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35 | # ----------------------------------------------------------------------------
36 |
37 | if [ -z "$MAVEN_SKIP_RC" ] ; then
38 |
39 | if [ -f /etc/mavenrc ] ; then
40 | . /etc/mavenrc
41 | fi
42 |
43 | if [ -f "$HOME/.mavenrc" ] ; then
44 | . "$HOME/.mavenrc"
45 | fi
46 |
47 | fi
48 |
49 | # OS specific support. $var _must_ be set to either true or false.
50 | cygwin=false;
51 | darwin=false;
52 | mingw=false
53 | case "`uname`" in
54 | CYGWIN*) cygwin=true ;;
55 | MINGW*) mingw=true;;
56 | Darwin*) darwin=true
57 | # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59 | if [ -z "$JAVA_HOME" ]; then
60 | if [ -x "/usr/libexec/java_home" ]; then
61 | export JAVA_HOME="`/usr/libexec/java_home`"
62 | else
63 | export JAVA_HOME="/Library/Java/Home"
64 | fi
65 | fi
66 | ;;
67 | esac
68 |
69 | if [ -z "$JAVA_HOME" ] ; then
70 | if [ -r /etc/gentoo-release ] ; then
71 | JAVA_HOME=`java-config --jre-home`
72 | fi
73 | fi
74 |
75 | if [ -z "$M2_HOME" ] ; then
76 | ## resolve links - $0 may be a link to maven's home
77 | PRG="$0"
78 |
79 | # need this for relative symlinks
80 | while [ -h "$PRG" ] ; do
81 | ls=`ls -ld "$PRG"`
82 | link=`expr "$ls" : '.*-> \(.*\)$'`
83 | if expr "$link" : '/.*' > /dev/null; then
84 | PRG="$link"
85 | else
86 | PRG="`dirname "$PRG"`/$link"
87 | fi
88 | done
89 |
90 | saveddir=`pwd`
91 |
92 | M2_HOME=`dirname "$PRG"`/..
93 |
94 | # make it fully qualified
95 | M2_HOME=`cd "$M2_HOME" && pwd`
96 |
97 | cd "$saveddir"
98 | # echo Using m2 at $M2_HOME
99 | fi
100 |
101 | # For Cygwin, ensure paths are in UNIX format before anything is touched
102 | if $cygwin ; then
103 | [ -n "$M2_HOME" ] &&
104 | M2_HOME=`cygpath --unix "$M2_HOME"`
105 | [ -n "$JAVA_HOME" ] &&
106 | JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107 | [ -n "$CLASSPATH" ] &&
108 | CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109 | fi
110 |
111 | # For Migwn, ensure paths are in UNIX format before anything is touched
112 | if $mingw ; then
113 | [ -n "$M2_HOME" ] &&
114 | M2_HOME="`(cd "$M2_HOME"; pwd)`"
115 | [ -n "$JAVA_HOME" ] &&
116 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117 | # TODO classpath?
118 | fi
119 |
120 | if [ -z "$JAVA_HOME" ]; then
121 | javaExecutable="`which javac`"
122 | if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
123 | # readlink(1) is not available as standard on Solaris 10.
124 | readLink=`which readlink`
125 | if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
126 | if $darwin ; then
127 | javaHome="`dirname \"$javaExecutable\"`"
128 | javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
129 | else
130 | javaExecutable="`readlink -f \"$javaExecutable\"`"
131 | fi
132 | javaHome="`dirname \"$javaExecutable\"`"
133 | javaHome=`expr "$javaHome" : '\(.*\)/bin'`
134 | JAVA_HOME="$javaHome"
135 | export JAVA_HOME
136 | fi
137 | fi
138 | fi
139 |
140 | if [ -z "$JAVACMD" ] ; then
141 | if [ -n "$JAVA_HOME" ] ; then
142 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
143 | # IBM's JDK on AIX uses strange locations for the executables
144 | JAVACMD="$JAVA_HOME/jre/sh/java"
145 | else
146 | JAVACMD="$JAVA_HOME/bin/java"
147 | fi
148 | else
149 | JAVACMD="`which java`"
150 | fi
151 | fi
152 |
153 | if [ ! -x "$JAVACMD" ] ; then
154 | echo "Error: JAVA_HOME is not defined correctly." >&2
155 | echo " We cannot execute $JAVACMD" >&2
156 | exit 1
157 | fi
158 |
159 | if [ -z "$JAVA_HOME" ] ; then
160 | echo "Warning: JAVA_HOME environment variable is not set."
161 | fi
162 |
163 | CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
164 |
165 | # traverses directory structure from process work directory to filesystem root
166 | # first directory with .mvn subdirectory is considered project base directory
167 | find_maven_basedir() {
168 |
169 | if [ -z "$1" ]
170 | then
171 | echo "Path not specified to find_maven_basedir"
172 | return 1
173 | fi
174 |
175 | basedir="$1"
176 | wdir="$1"
177 | while [ "$wdir" != '/' ] ; do
178 | if [ -d "$wdir"/.mvn ] ; then
179 | basedir=$wdir
180 | break
181 | fi
182 | # workaround for JBEAP-8937 (on Solaris 10/Sparc)
183 | if [ -d "${wdir}" ]; then
184 | wdir=`cd "$wdir/.."; pwd`
185 | fi
186 | # end of workaround
187 | done
188 | echo "${basedir}"
189 | }
190 |
191 | # concatenates all lines of a file
192 | concat_lines() {
193 | if [ -f "$1" ]; then
194 | echo "$(tr -s '\n' ' ' < "$1")"
195 | fi
196 | }
197 |
198 | BASE_DIR=`find_maven_basedir "$(pwd)"`
199 | if [ -z "$BASE_DIR" ]; then
200 | exit 1;
201 | fi
202 |
203 | export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
204 | echo $MAVEN_PROJECTBASEDIR
205 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
206 |
207 | # For Cygwin, switch paths to Windows format before running java
208 | if $cygwin; then
209 | [ -n "$M2_HOME" ] &&
210 | M2_HOME=`cygpath --path --windows "$M2_HOME"`
211 | [ -n "$JAVA_HOME" ] &&
212 | JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
213 | [ -n "$CLASSPATH" ] &&
214 | CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
215 | [ -n "$MAVEN_PROJECTBASEDIR" ] &&
216 | MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
217 | fi
218 |
219 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
220 |
221 | exec "$JAVACMD" \
222 | $MAVEN_OPTS \
223 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
224 | "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
225 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
226 |
--------------------------------------------------------------------------------
/mvnw.cmd:
--------------------------------------------------------------------------------
1 | @REM ----------------------------------------------------------------------------
2 | @REM Licensed to the Apache Software Foundation (ASF) under one
3 | @REM or more contributor license agreements. See the NOTICE file
4 | @REM distributed with this work for additional information
5 | @REM regarding copyright ownership. The ASF licenses this file
6 | @REM to you under the Apache License, Version 2.0 (the
7 | @REM "License"); you may not use this file except in compliance
8 | @REM with the License. You may obtain a copy of the License at
9 | @REM
10 | @REM http://www.apache.org/licenses/LICENSE-2.0
11 | @REM
12 | @REM Unless required by applicable law or agreed to in writing,
13 | @REM software distributed under the License is distributed on an
14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | @REM KIND, either express or implied. See the License for the
16 | @REM specific language governing permissions and limitations
17 | @REM under the License.
18 | @REM ----------------------------------------------------------------------------
19 |
20 | @REM ----------------------------------------------------------------------------
21 | @REM Maven2 Start Up Batch script
22 | @REM
23 | @REM Required ENV vars:
24 | @REM JAVA_HOME - location of a JDK home dir
25 | @REM
26 | @REM Optional ENV vars
27 | @REM M2_HOME - location of maven2's installed home dir
28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31 | @REM e.g. to debug Maven itself, use
32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34 | @REM ----------------------------------------------------------------------------
35 |
36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37 | @echo off
38 | @REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
39 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
40 |
41 | @REM set %HOME% to equivalent of $HOME
42 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
43 |
44 | @REM Execute a user defined script before this one
45 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
46 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending
47 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
48 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
49 | :skipRcPre
50 |
51 | @setlocal
52 |
53 | set ERROR_CODE=0
54 |
55 | @REM To isolate internal variables from possible post scripts, we use another setlocal
56 | @setlocal
57 |
58 | @REM ==== START VALIDATION ====
59 | if not "%JAVA_HOME%" == "" goto OkJHome
60 |
61 | echo.
62 | echo Error: JAVA_HOME not found in your environment. >&2
63 | echo Please set the JAVA_HOME variable in your environment to match the >&2
64 | echo location of your Java installation. >&2
65 | echo.
66 | goto error
67 |
68 | :OkJHome
69 | if exist "%JAVA_HOME%\bin\java.exe" goto init
70 |
71 | echo.
72 | echo Error: JAVA_HOME is set to an invalid directory. >&2
73 | echo JAVA_HOME = "%JAVA_HOME%" >&2
74 | echo Please set the JAVA_HOME variable in your environment to match the >&2
75 | echo location of your Java installation. >&2
76 | echo.
77 | goto error
78 |
79 | @REM ==== END VALIDATION ====
80 |
81 | :init
82 |
83 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
84 | @REM Fallback to current working directory if not found.
85 |
86 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
87 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
88 |
89 | set EXEC_DIR=%CD%
90 | set WDIR=%EXEC_DIR%
91 | :findBaseDir
92 | IF EXIST "%WDIR%"\.mvn goto baseDirFound
93 | cd ..
94 | IF "%WDIR%"=="%CD%" goto baseDirNotFound
95 | set WDIR=%CD%
96 | goto findBaseDir
97 |
98 | :baseDirFound
99 | set MAVEN_PROJECTBASEDIR=%WDIR%
100 | cd "%EXEC_DIR%"
101 | goto endDetectBaseDir
102 |
103 | :baseDirNotFound
104 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
105 | cd "%EXEC_DIR%"
106 |
107 | :endDetectBaseDir
108 |
109 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
110 |
111 | @setlocal EnableExtensions EnableDelayedExpansion
112 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
113 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
114 |
115 | :endReadAdditionalConfig
116 |
117 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
118 |
119 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
120 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
121 |
122 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
123 | if ERRORLEVEL 1 goto error
124 | goto end
125 |
126 | :error
127 | set ERROR_CODE=1
128 |
129 | :end
130 | @endlocal & set ERROR_CODE=%ERROR_CODE%
131 |
132 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
133 | @REM check for post script, once with legacy .bat ending and once with .cmd ending
134 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
135 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
136 | :skipRcPost
137 |
138 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
139 | if "%MAVEN_BATCH_PAUSE%" == "on" pause
140 |
141 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
142 |
143 | exit /B %ERROR_CODE%
144 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | top.fanfpy
7 | xiaoyuanxianyu
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 |
12 | xiaoyuanxianyu
13 | Demo project for Spring Boot
14 |
15 |
16 | org.springframework.boot
17 | spring-boot-starter-parent
18 | 2.2.2.RELEASE
19 |
20 |
21 |
22 |
23 |
24 |
25 | junit
26 | junit
27 | 4.12
28 |
29 |
30 |
31 | org.springframework.boot
32 | spring-boot-starter-web
33 |
34 |
35 |
36 |
37 | org.springframework.boot
38 | spring-boot-starter
39 |
40 |
41 |
42 | org.springframework.boot
43 | spring-boot-starter-test
44 | test
45 |
46 |
47 |
48 | org.springframework.boot
49 | spring-boot-starter-data-jpa
50 |
51 |
52 |
53 | mysql
54 | mysql-connector-java
55 | 5.1.42
56 |
57 |
58 |
59 |
60 | org.springframework.boot
61 | spring-boot-devtools
62 | true
63 |
64 |
65 |
66 |
67 | org.springframework.boot
68 | spring-boot-starter-aop
69 |
70 |
71 |
72 |
73 | com.github.binarywang
74 | weixin-java-miniapp
75 | 3.3.0
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 | com.spring4all
91 | swagger-spring-boot-starter
92 | 1.9.0.RELEASE
93 |
94 |
95 |
96 |
97 | com.aliyun.oss
98 | aliyun-sdk-oss
99 | 2.8.3
100 |
101 |
102 |
103 | cn.hutool
104 | hutool-all
105 | 4.1.19
106 |
107 |
108 |
109 | org.projectlombok
110 | lombok
111 | 1.18.10
112 | provided
113 |
114 |
115 |
116 |
117 | xiaoyuanxianyu
118 |
119 |
120 | org.springframework.boot
121 | spring-boot-maven-plugin
122 |
123 |
124 | true
125 | true
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/XiaoyuanxianyuApplication.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import springfox.documentation.swagger2.annotations.EnableSwagger2;
6 |
7 | @EnableSwagger2
8 | @SpringBootApplication
9 | public class XiaoyuanxianyuApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(XiaoyuanxianyuApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/aspect/HttpAspect.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.aspect;
2 |
3 | import org.aspectj.lang.JoinPoint;
4 | import org.aspectj.lang.annotation.*;
5 | import org.slf4j.Logger;
6 | import org.slf4j.LoggerFactory;
7 | import org.springframework.stereotype.Component;
8 | import org.springframework.web.context.request.RequestContextHolder;
9 | import org.springframework.web.context.request.ServletRequestAttributes;
10 |
11 | import javax.servlet.http.HttpServletRequest;
12 |
13 | @Aspect
14 | //@Component
15 | public class HttpAspect {
16 |
17 | private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
18 |
19 | @Pointcut("execution(public * top.fanfpy.xiaoyuanxianyu.web(..))")
20 | public void log(){
21 | }
22 |
23 | //启动前
24 | @Before("log()")
25 |
26 | public void doBefore(JoinPoint joinPoint){
27 | ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
28 | HttpServletRequest request=attributes.getRequest();
29 | //url
30 | logger.info("url={}",request.getRequestURI());
31 | //method
32 | logger.info("method={}", request.getMethod());
33 | //ip
34 | logger.info("ip={}",request.getRemoteAddr());
35 |
36 | logger.info("args={}",joinPoint.getArgs());
37 | }
38 |
39 | //启动后
40 |
41 | @After("log()")
42 | public void doAfter(){
43 |
44 | }
45 |
46 | //返回参数
47 |
48 | @AfterReturning(returning = "object" , pointcut = "log()")
49 | public void doAfterReturning(Object object){
50 | logger.info("response={}",object);
51 | }
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/config/AliOss.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.config;
2 |
3 | import cn.hutool.core.date.DateUtil;
4 | import org.springframework.context.annotation.Configuration;
5 | import com.aliyun.oss.OSSClient;
6 | import org.springframework.beans.factory.annotation.Value;
7 | import org.springframework.stereotype.Component;
8 | import java.io.InputStream;
9 |
10 | @Component
11 | @Configuration
12 | public class AliOss {
13 |
14 | @Value("${endpoint}")
15 | private String endpoint;
16 |
17 | @Value("${accessKeyId}")
18 | private String accessKeyId;
19 |
20 | @Value("${accessKeySecret}")
21 | private String accessKeySecret;
22 |
23 | @Value("${bucketName}")
24 | private String bucketName;
25 |
26 | public OSSClient ossClient(){
27 | return new OSSClient(this.endpoint,this.accessKeyId,this.accessKeySecret);
28 | }
29 |
30 | /**
31 | * 文件流和文件名
32 | * return 文件路径
33 | * */
34 | public String updateImg(InputStream inputStream, String fileName){
35 | long time = System.currentTimeMillis();
36 | ossClient().putObject(this.bucketName, DateUtil.today() +"/"+time+fileName,inputStream);
37 | return "https://" +this.bucketName+"." +this.endpoint + "/" + DateUtil.today() +"/"+time+fileName;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/config/Swagger2.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.config;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.Configuration;
5 | import springfox.documentation.builders.ApiInfoBuilder;
6 | import springfox.documentation.builders.PathSelectors;
7 | import springfox.documentation.builders.RequestHandlerSelectors;
8 | import springfox.documentation.service.ApiInfo;
9 | import springfox.documentation.spi.DocumentationType;
10 | import springfox.documentation.spring.web.plugins.Docket;
11 | import springfox.documentation.swagger2.annotations.EnableSwagger2;
12 |
13 | //废弃 使用starter版
14 | //@Configuration
15 | //@EnableSwagger2
16 | public class Swagger2 {
17 |
18 | // @Bean
19 | // public Docket createRestApi() {
20 | // return new Docket(DocumentationType.SWAGGER_2)
21 | // .apiInfo(apiInfo())
22 | // .select()
23 | // .apis(RequestHandlerSelectors.basePackage("top.fanfpy.xiaoyuanxianyu.web"))
24 | // .paths(PathSelectors.any())
25 | // .build();
26 | // }
27 | //
28 | // private ApiInfo apiInfo() {
29 | // return new ApiInfoBuilder()
30 | // .title("Spring Boot中使用Swagger2构建RESTful APIs")
31 | // .description("")
32 | // .version("1.0")
33 | // .build();
34 | // }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/config/WxMiniAppConfiguration.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.config;
2 |
3 | import cn.binarywang.wx.miniapp.api.WxMaService;
4 | import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
5 | import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
6 | import org.slf4j.Logger;
7 | import org.slf4j.LoggerFactory;
8 | import org.springframework.beans.factory.annotation.Value;
9 | import org.springframework.context.annotation.Bean;
10 | import org.springframework.context.annotation.Configuration;
11 |
12 |
13 | @Configuration
14 | public class WxMiniAppConfiguration {
15 |
16 | private Logger log = LoggerFactory.getLogger(WxMiniAppConfiguration.class);
17 | /**
18 | * 设置微信小程序的appid
19 | */
20 | @Value("${wx.miniapp.appid}")
21 | private String appid;
22 |
23 | /**
24 | * 设置微信小程序的Secret
25 | */
26 | @Value("${wx.miniapp.secret}")
27 | private String secret;
28 |
29 | /**
30 | * 设置微信小程序消息服务器配置的token
31 | */
32 | @Value("${wx.miniapp.token}")
33 | private String token;
34 |
35 | /**
36 | * 设置微信小程序消息服务器配置的EncodingAESKey
37 | */
38 | @Value("${wx.miniapp.aesKey}")
39 | private String aesKey;
40 |
41 | /**
42 | * 消息格式,XML或者JSON
43 | */
44 | @Value("${wx.miniapp.msgDataFormat}")
45 | private String msgDataFormat;
46 |
47 | @Bean
48 | public WxMaInMemoryConfig WxConfig() {
49 | WxMaInMemoryConfig config = new WxMaInMemoryConfig();
50 | config.setAppid(this.appid);
51 | config.setSecret(this.secret);
52 | config.setToken(this.token);
53 | config.setAesKey(this.aesKey);
54 | config.setMsgDataFormat(this.msgDataFormat);
55 | return config;
56 | }
57 |
58 | @Bean
59 | public WxMaService Service() {
60 | WxMaService service = new WxMaServiceImpl();
61 | service.setWxMaConfig(WxConfig());
62 | return service;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/entity/Classification.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.entity;
2 |
3 | import lombok.Data;
4 | import org.hibernate.validator.constraints.Length;
5 |
6 | import javax.persistence.*;
7 | import javax.validation.constraints.*;
8 |
9 | /**
10 | * 分类表
11 | * @author fanfp
12 | * @date 2018/4/22
13 | * */
14 | @Data
15 | @Entity(name = "classification")
16 | public class Classification {
17 | @Id
18 | @GeneratedValue(strategy = GenerationType.IDENTITY)
19 | private Integer id;
20 |
21 | @NotNull(message = "分类名")
22 | @Length(max = 10)
23 | private String name;
24 |
25 | @NotNull(message = "该分类下商品数量")
26 | private Integer number;
27 |
28 | @NotNull(message = "状态0 正常 1暂停")
29 | private Byte status;
30 |
31 | public Classification(){
32 | }
33 |
34 | public Classification(@NotNull(message = "分类名") @Length(max = 10) String name, @NotNull(message = "该分类下商品数量") Integer number, @NotNull(message = "状态0 正常 1暂停") Byte status) {
35 | this.name = name;
36 | this.number = number;
37 | this.status = status;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/entity/Comments.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.entity;
2 |
3 | import lombok.Data;
4 |
5 | import javax.persistence.*;
6 | import javax.validation.constraints.NotNull;
7 |
8 | /**
9 | * @author fanfpy
10 | * @date 2018/4/23
11 | * */
12 | @Data
13 | @Entity(name = "comments")
14 | public class Comments {
15 | @Id
16 | @GeneratedValue(strategy = GenerationType.IDENTITY)
17 | private Integer id;
18 |
19 | private Integer userId;
20 |
21 | private Integer goodsId;
22 |
23 |
24 | private String content;
25 |
26 | @Column(name = "create_at")
27 | private String date;
28 |
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/entity/Goods.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.entity;
2 |
3 | import lombok.Data;
4 |
5 | import javax.persistence.*;
6 | import javax.validation.constraints.NotNull;
7 | import java.math.BigDecimal;
8 |
9 | /**
10 | * 商品表
11 | * @author fanfp
12 | * @date 2018/4/23
13 | * */
14 | @Data
15 | @Entity
16 | @Table(name = "goods")
17 | public class Goods {
18 | @Id
19 | @GeneratedValue(strategy = GenerationType.IDENTITY)
20 | private Integer id;
21 |
22 | private Integer userId;
23 |
24 | private Integer classificationId;
25 |
26 | private Integer commetNum;
27 |
28 | private String describle;
29 |
30 | private String name;
31 |
32 | private BigDecimal price;
33 |
34 | private byte status;
35 |
36 | private Integer pageView;
37 |
38 | private String updateTime;
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/entity/GoodsImg.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.entity;
2 |
3 | import lombok.Data;
4 |
5 | import javax.persistence.*;
6 |
7 | /**
8 | * @author fanfp
9 | * */
10 | @Data
11 | @Entity
12 | @Table(name = "goods_img")
13 | public class GoodsImg {
14 | @Id
15 | @GeneratedValue(strategy = GenerationType.IDENTITY)
16 | private Integer id;
17 |
18 | private Integer goodsId;
19 |
20 | private String imgUrl;
21 |
22 | public GoodsImg() {
23 | }
24 |
25 | public GoodsImg(Integer goodsId, String imgUrl) {
26 | this.goodsId = goodsId;
27 | this.imgUrl = imgUrl;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/entity/User.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.entity;
2 |
3 | import lombok.Data;
4 | import org.hibernate.validator.constraints.Length;
5 |
6 | import javax.persistence.*;
7 | import javax.validation.constraints.Email;
8 | import javax.validation.constraints.NotNull;
9 | import java.util.Random;
10 |
11 | /**
12 | * @author fanfp
13 | * @date 2018/04/19
14 | * User实体类
15 | * */
16 | @Data
17 | @Entity(name = "user")
18 | public class User {
19 |
20 | /**
21 | * GeneratedValue(strategy = GenerationType.IDENTITY) 表示自增长方式使用mysql自带的
22 | * */
23 | @Id
24 | @GeneratedValue(strategy = GenerationType.IDENTITY)
25 | private Integer id;
26 |
27 | private String phone;
28 |
29 | @NotNull(message = "用户名不能为空")
30 | private String username;
31 |
32 | private String password;
33 |
34 | private String qq;
35 |
36 | private String email;
37 |
38 | private String openid;
39 |
40 | private Integer goodsNum = 0;
41 |
42 |
43 | @NotNull(message = "权限值默认为10")
44 | private Byte power = 0;
45 |
46 |
47 | @NotNull(message = "是否冻结默认为0,1为未激活,2为封禁")
48 | private Byte status = 0;
49 |
50 | @Column(name = "user_img")
51 | @NotNull(message = "用户头像")
52 | private String userImg;
53 |
54 |
55 | public Integer getId() {
56 | new Random().nextInt();
57 | return id;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/repository/ClassificationRepository.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.repository;
2 |
3 | import org.springframework.data.jpa.repository.JpaRepository;
4 | import top.fanfpy.xiaoyuanxianyu.entity.Classification;
5 | /**
6 | * @date 2018/5/16
7 | * @author fanfp
8 | * */
9 | public interface ClassificationRepository extends JpaRepository {
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/repository/CommentsRepository.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.repository;
2 |
3 | import org.springframework.data.jpa.repository.JpaRepository;
4 | import top.fanfpy.xiaoyuanxianyu.entity.Comments;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * @author fanfp
10 | * @date 2018/5.16
11 | * */
12 | public interface CommentsRepository extends JpaRepository {
13 |
14 | /**
15 | * @param goodsId 商品id
16 | * @return 返回评论表
17 | * */
18 | List findAllByGoodsId(Integer goodsId);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/repository/GoodsImgRepository.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.repository;
2 |
3 | import org.springframework.data.domain.Pageable;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.data.repository.query.Param;
7 | import org.springframework.stereotype.Repository;
8 | import top.fanfpy.xiaoyuanxianyu.entity.GoodsImg;
9 |
10 | import java.util.List;
11 | /**
12 | * @author fanfp
13 | * */
14 | public interface GoodsImgRepository extends JpaRepository {
15 | /**
16 | * @param goodsId 商品id
17 | * @return 返回商品对应的图片
18 | * */
19 | List findByGoodsId(Integer goodsId, Pageable pageable);
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/repository/GoodsRepository.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.repository;
2 |
3 |
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.data.domain.Page;
6 | import org.springframework.data.domain.Pageable;
7 | import org.springframework.data.jpa.repository.JpaRepository;
8 | import top.fanfpy.xiaoyuanxianyu.entity.Goods;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @author fanfp
14 | * */
15 | public interface GoodsRepository extends JpaRepository {
16 |
17 | /**
18 | * 通过分类id查询
19 | * @param classifiactionId 商品分类id
20 | * @return 返回商品列表
21 | * */
22 | List findByClassificationId(Integer classifiactionId);
23 |
24 |
25 | List findByUserId(Integer userId);
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/repository/UserRepository.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.repository;
2 |
3 | import org.springframework.data.jpa.repository.JpaRepository;
4 | import org.springframework.data.jpa.repository.Query;
5 | import org.springframework.data.repository.query.Param;
6 | import top.fanfpy.xiaoyuanxianyu.entity.Goods;
7 | import top.fanfpy.xiaoyuanxianyu.entity.User;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * @author fanfp
13 | * @date 2018/4/19
14 | * */
15 | public interface UserRepository extends JpaRepository {
16 |
17 | // List findByUsername(String username);
18 | /**
19 | * 通过name查询
20 | * @param username 用户名
21 | * @return 用户列表
22 | * */
23 | User findByUsername(String username);
24 |
25 | /**
26 | * @param username 用户名
27 | * @param password 密码
28 | * @return 返回用户 否则为空
29 | * */
30 | User findByUsernameAndPassword(String username , String password);
31 |
32 |
33 | /**
34 | * @param openid
35 | * @return 返回user
36 | * */
37 | User findByOpenid(String openid);
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/ClassificationService.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service;
2 |
3 | import top.fanfpy.xiaoyuanxianyu.entity.Classification;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * @author fanfp
9 | * @date 18/4/23
10 | * */
11 | public interface ClassificationService {
12 |
13 | /**
14 | * 返回分类列表
15 | * @return 返回分类列表
16 | * */
17 | List listClassification();
18 |
19 | /**通过id删除分类
20 | * @param id 分类id
21 | * */
22 | void delClassification(Integer id);
23 |
24 |
25 | /**
26 | * @param classification 分类
27 | * @return 返回增加列表的信息
28 | * 保存分类
29 | * */
30 | Classification save(Classification classification);
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/CommentsService.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service;
2 |
3 | import top.fanfpy.xiaoyuanxianyu.entity.Comments;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * @author fanfp
9 | * @date 18/4/23
10 | * */
11 | public interface CommentsService {
12 | /**
13 | *增加评论 商品品论字段下自增1
14 | * @return 返回评论
15 | * @param comments 评论
16 | * */
17 | Comments addComment(Comments comments);
18 |
19 | /**
20 | * 删除评论
21 | * @param id 评论id
22 | * */
23 | void delComment(Integer id);
24 |
25 | /**
26 | * @param goodsId 商品id
27 | * @return 评论
28 | * */
29 | List getCommentByGoodsId(Integer goodsId);
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/GoodsImgService.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service;
2 |
3 | import top.fanfpy.xiaoyuanxianyu.entity.GoodsImg;
4 |
5 | import java.util.List;
6 | /**
7 | * @author fanfp
8 | * */
9 | public interface GoodsImgService {
10 | /**
11 | * @param goodsId 商品id
12 | * @return 返回商品图片列表
13 | *通过商品id查询
14 | * */
15 | List finaByGoodsId(Integer goodsId);
16 |
17 | /**
18 | * @param goodsImg 图片对象
19 | * */
20 | GoodsImg save(GoodsImg goodsImg);
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/GoodsSrevice.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service;
2 |
3 | import top.fanfpy.xiaoyuanxianyu.vo.GoodsInfoVO;
4 | import top.fanfpy.xiaoyuanxianyu.entity.Goods;
5 | import org.springframework.data.domain.Page;
6 | import org.springframework.data.domain.Pageable;
7 |
8 | import java.util.List;
9 | import java.util.Optional;
10 | /**
11 | * @author fanfp
12 | * */
13 | public interface GoodsSrevice {
14 |
15 |
16 | /**
17 | * 查询所有商品
18 | * @return 返回集合
19 | * */
20 | List listGoods();
21 |
22 | /**
23 | * @param goods
24 | *增加商品 且增加所在分类下的数字 用户对应的上架数量
25 | * */
26 | Goods saveGood(Goods goods);
27 |
28 | /**
29 | * @param goods 商品对象
30 | * */
31 | Goods upGoods(Goods goods);
32 | /**
33 | * 删除商品
34 | * @param id 商品id
35 | * */
36 | void delGoods(Integer id);
37 |
38 | /**
39 | * 分页查询所有商品
40 | * @param pageable
41 | * @return 返回页
42 | * */
43 | Page findAll(Pageable pageable);
44 |
45 | List findallGood();
46 |
47 | /**
48 | * 通过id查商品
49 | * */
50 | Optional findById(Integer id);
51 |
52 | /**通过分类 返回商品数组
53 | * @return 商品数组
54 | * */
55 | List findByClassifiaction(Integer classifiactionId);
56 |
57 | /**
58 | * 分页查询热门商品
59 | * @return 商品页
60 |
61 | * */
62 | Page findByHotGoods(Integer page);
63 |
64 | /**
65 | * 分页查询id倒序
66 | * @return 商品页
67 |
68 | * */
69 | Page findByNewGoods(Integer page);
70 |
71 | /**
72 | * @date 2018/6/6
73 | *直接返回页面所需要的商品信息 包括用户头像 商品图片 减少Controller的复杂程度
74 | * 因预览页和详情页(预览页最多三张图片) 显示图片的数量不同 所以增加了imgMun
75 | * @param goodsId 商品id
76 | * @param imgNum 图片数量
77 | * */
78 | GoodsInfoVO GoodsInfo(Integer goodsId,Integer imgNum);
79 | }
80 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/UserService.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service;
2 |
3 |
4 | import top.fanfpy.xiaoyuanxianyu.entity.User;
5 |
6 | import java.util.List;
7 | import java.util.Optional;
8 |
9 | /**
10 | * @author fanfp
11 | * @date 2018/4/23
12 | * */
13 | public interface UserService {
14 | /**
15 | * 登陆
16 | * @param username 用户名
17 | * @param password 密码
18 | * @return user
19 | * */
20 | User login(String username, String password);
21 |
22 | /**
23 | * @param user 用户
24 | * @return 返回user
25 | * 保存修改用户
26 | * */
27 | User save(User user);
28 |
29 | /**
30 | * 通过id删除用户
31 | * @param id 用户id
32 | * */
33 | void delUser(Integer id);
34 |
35 | /**
36 | * @param id 用户ID
37 | * 通过id查询用户
38 | * */
39 | Optional finaUserId(Integer id);
40 |
41 | /**
42 | * @param openid 微信openid
43 | *通过openid查询用户
44 | * */
45 | User findByOpenid(String openid);
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/impl/ClassificationServiceImpl.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 | import top.fanfpy.xiaoyuanxianyu.entity.Classification;
6 | import top.fanfpy.xiaoyuanxianyu.repository.ClassificationRepository;
7 | import top.fanfpy.xiaoyuanxianyu.service.ClassificationService;
8 |
9 | import java.util.List;
10 | /**
11 | * @author fanfp
12 | * @date 18/4/23
13 | * */
14 | @Service
15 | public class ClassificationServiceImpl implements ClassificationService {
16 |
17 | @Autowired
18 | ClassificationRepository classificationRepository;
19 | @Override
20 | public List listClassification() {
21 | return classificationRepository.findAll();
22 | }
23 |
24 |
25 | @Override
26 | public void delClassification(Integer id) {
27 | classificationRepository.deleteById(id);
28 | }
29 |
30 | @Override
31 | public Classification save(Classification classification) {
32 | return classificationRepository.save(classification);
33 | }
34 | }
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/impl/CommentsServiceImpl.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 | import top.fanfpy.xiaoyuanxianyu.entity.Comments;
6 | import top.fanfpy.xiaoyuanxianyu.entity.Goods;
7 | import top.fanfpy.xiaoyuanxianyu.repository.CommentsRepository;
8 | import top.fanfpy.xiaoyuanxianyu.repository.GoodsRepository;
9 | import top.fanfpy.xiaoyuanxianyu.service.CommentsService;
10 |
11 | import java.util.List;
12 | import java.util.Optional;
13 | /**
14 | * @date 2018/5/16
15 | * @author fanfp
16 | * */
17 | @Service
18 | public class CommentsServiceImpl implements CommentsService {
19 |
20 | @Autowired
21 | CommentsRepository commentsRepository;
22 | @Autowired
23 | GoodsRepository goodsRepository;
24 |
25 | @Override
26 | public Comments addComment(Comments comments) {
27 | //取出对应的商品对象
28 | Goods good = goodsRepository.findById(comments.getGoodsId()).get();
29 | //商品评论字段加一
30 | good.setCommetNum(good.getCommetNum()+1);
31 | goodsRepository.save(good);
32 | return commentsRepository.save(comments);
33 | }
34 |
35 | @Override
36 | public void delComment(Integer id) {
37 | commentsRepository.deleteById(id);
38 | }
39 |
40 | @Override
41 | public List getCommentByGoodsId(Integer goodsId) {
42 | return commentsRepository.findAllByGoodsId(goodsId);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/impl/GoodsImgServiceImpl.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 | import top.fanfpy.xiaoyuanxianyu.entity.GoodsImg;
6 | import top.fanfpy.xiaoyuanxianyu.repository.GoodsImgRepository;
7 | import top.fanfpy.xiaoyuanxianyu.service.GoodsImgService;
8 |
9 | import java.util.List;
10 | /**
11 | * @author fanfp
12 | * */
13 | @Service
14 | public class GoodsImgServiceImpl implements GoodsImgService {
15 |
16 | @Autowired
17 | GoodsImgRepository goodsImgRepository;
18 |
19 | @Override
20 | public List finaByGoodsId(Integer goodsId) {
21 | return goodsImgRepository.findByGoodsId(goodsId,null);
22 | }
23 |
24 | @Override
25 | public GoodsImg save(GoodsImg goodsImg) {
26 | return goodsImgRepository.save(goodsImg);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/impl/GoodsServiceImpl.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.data.domain.PageRequest;
5 | import org.springframework.data.domain.Sort;
6 | import org.springframework.stereotype.Service;
7 | import top.fanfpy.xiaoyuanxianyu.vo.GoodsInfoVO;
8 | import top.fanfpy.xiaoyuanxianyu.entity.Classification;
9 | import top.fanfpy.xiaoyuanxianyu.entity.Goods;
10 | import top.fanfpy.xiaoyuanxianyu.entity.GoodsImg;
11 | import top.fanfpy.xiaoyuanxianyu.entity.User;
12 | import top.fanfpy.xiaoyuanxianyu.repository.ClassificationRepository;
13 | import top.fanfpy.xiaoyuanxianyu.repository.GoodsImgRepository;
14 | import top.fanfpy.xiaoyuanxianyu.repository.GoodsRepository;
15 | import top.fanfpy.xiaoyuanxianyu.repository.UserRepository;
16 | import top.fanfpy.xiaoyuanxianyu.service.GoodsSrevice;
17 | import org.springframework.data.domain.Page;
18 | import org.springframework.data.domain.Pageable;
19 |
20 | import java.util.ArrayList;
21 | import java.util.List;
22 | import java.util.Optional;
23 |
24 | /**
25 | * @author fanfp
26 | * */
27 | @Service
28 | public class GoodsServiceImpl implements GoodsSrevice {
29 |
30 |
31 | @Autowired
32 | private GoodsRepository goodsRepository;
33 | @Autowired
34 | private ClassificationRepository classificationRepository;
35 | @Autowired
36 | private UserRepository userRepository;
37 | @Autowired
38 | private GoodsImgRepository goodsImgRepository;
39 |
40 | @Override
41 | public List listGoods() {
42 | return goodsRepository.findAll();
43 | }
44 |
45 | @Override
46 | public void delGoods(Integer id) {
47 | goodsRepository.deleteById(id);
48 | }
49 |
50 | @Override
51 | public Goods saveGood(Goods goods) {
52 | //取出对应的类目
53 | Classification classification = classificationRepository.findById(goods.getClassificationId()).get();
54 | //字段加1
55 | classification.setNumber(classification.getNumber()+1);
56 | classificationRepository.save(classification);
57 |
58 | //取出对应字段的用户
59 | User user= userRepository.findById(goods.getUserId()).get();
60 | //加一
61 | user.setGoodsNum(user.getGoodsNum()+1);
62 | userRepository.save(user);
63 | return goodsRepository.save(goods);
64 | }
65 |
66 | @Override
67 | public Goods upGoods(Goods goods) {
68 | return goodsRepository.save(goods);
69 | }
70 |
71 | @Override
72 | public Page findAll(Pageable pageable) {
73 | return goodsRepository.findAll(pageable);
74 | }
75 |
76 | @Override
77 | public List findallGood() {
78 | return goodsRepository.findAll();
79 | }
80 |
81 | @Override
82 | public Optional findById(Integer id) {
83 | return goodsRepository.findById(id);
84 | }
85 |
86 | @Override
87 | public List findByClassifiaction(Integer classifiactionId) {
88 | return goodsRepository.findByClassificationId(classifiactionId);
89 | }
90 |
91 |
92 | @Override
93 | public Page findByHotGoods(Integer page) {
94 | //分页方法
95 | Pageable pageable =PageRequest.of(0,page,Sort.Direction.DESC,"PageView");
96 | return goodsRepository.findAll(pageable);
97 | }
98 |
99 | @Override
100 | public Page findByNewGoods(Integer page) {
101 | Pageable pageable =PageRequest.of(0,page,Sort.Direction.DESC,"Id");
102 | return goodsRepository.findAll(pageable);
103 | }
104 |
105 | @Override
106 | public GoodsInfoVO GoodsInfo(Integer goodsId, Integer imgNum) {
107 | /**
108 | * @date 2018/6/6
109 | * 创建goodsInfo对象 通过商品id获取 goods对象 获取 商品图片
110 | * 通过goods 获取 用户id 获取用户名 头像
111 | * 然后一次添加到GoodsInfo
112 | */
113 | GoodsInfoVO goodsInfoVO = new GoodsInfoVO();
114 | List stringList = new ArrayList<>();
115 |
116 | //查询对应的商品
117 | Goods goods = goodsRepository.findById(goodsId).get();
118 | //对应的用户
119 | User user = userRepository.findById(goods.getUserId()).get();
120 |
121 | //对应商品的图片
122 |
123 | goodsImgRepository.findByGoodsId(goodsId,PageRequest.of(0,3)).forEach(e->stringList.add(e.getImgUrl()));
124 |
125 | goodsInfoVO.setGoodsId(goods.getId());
126 | goodsInfoVO.setUserId(goods.getUserId());
127 | goodsInfoVO.setUserName(user.getUsername());
128 | goodsInfoVO.setUserImg(user.getUserImg());
129 | goodsInfoVO.setGoodsTitle(goods.getName());
130 | goodsInfoVO.setPrice(goods.getPrice());
131 | goodsInfoVO.setPageView(goods.getPageView());
132 | goodsInfoVO.setStatus(goods.getStatus());
133 | goodsInfoVO.setDescrible(goods.getDescrible());
134 | goodsInfoVO.setUpdateTime(goods.getUpdateTime());
135 | goodsInfoVO.setGoodsImgList(stringList);
136 |
137 | return goodsInfoVO;
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/service/impl/UserServiceImpl.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 | import top.fanfpy.xiaoyuanxianyu.entity.User;
6 | import top.fanfpy.xiaoyuanxianyu.repository.UserRepository;
7 | import top.fanfpy.xiaoyuanxianyu.service.UserService;
8 |
9 | import java.util.List;
10 | import java.util.Optional;
11 |
12 | /**
13 | * @author fanfp
14 | * @date 2018/4/23
15 | * */
16 | @Service
17 | public class UserServiceImpl implements UserService{
18 |
19 | @Autowired
20 | private UserRepository userRepository;
21 |
22 | @Override
23 | public User login(String username, String password) {
24 | return userRepository.findByUsernameAndPassword(username,password);
25 | }
26 |
27 | @Override
28 | public User save(User user) {
29 | return userRepository.save(user);
30 | }
31 |
32 | @Override
33 | public void delUser(Integer id) {
34 | userRepository.deleteById(id);
35 | }
36 |
37 | @Override
38 | public Optional finaUserId(Integer id) {
39 | return userRepository.findById(id);
40 | }
41 |
42 | @Override
43 | public User findByOpenid(String openid) {
44 | return userRepository.findByOpenid(openid);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/top/fanfpy/xiaoyuanxianyu/utils/ResultUtils.java:
--------------------------------------------------------------------------------
1 | package top.fanfpy.xiaoyuanxianyu.utils;
2 |
3 | import top.fanfpy.xiaoyuanxianyu.vo.ResultVO;
4 |
5 | /**
6 | * @author fanfp
7 | * @date 2018/4/29
8 | **/
9 | public class ResultUtils {
10 | public static ResultVO