first commit

This commit is contained in:
朱毅骏 2021-01-07 08:57:11 +08:00
parent 213fb4f1b5
commit bc7bb41837
252 changed files with 10676 additions and 0 deletions

33
.gitignore vendored Normal file
View File

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

118
.mvn/wrapper/MavenWrapperDownloader.java vendored Normal file
View File

@ -0,0 +1,118 @@
/*
* Copyright 2007-present 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.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
private static final String WRAPPER_VERSION = "0.5.6";
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if (mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if (mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if (!outputFile.getParentFile().exists()) {
if (!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
String username = System.getenv("MVNW_USERNAME");
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}

BIN
.mvn/wrapper/maven-wrapper.jar vendored Normal file

Binary file not shown.

2
.mvn/wrapper/maven-wrapper.properties vendored Normal file
View File

@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

199
db/mydoc.sql Normal file
View File

@ -0,0 +1,199 @@
create DATABASE mydoc;
use mydoc;
create table article (
id varchar(64) not null PRIMARY key comment '文章id',
user_id varchar(64) not null comment '作者id',
status int(4) default 1 comment '显示状态 0 私密 1 公开 2不显示 3删除',
original int(4) comment '原创 0 原创 1 转载',
reprint_link varchar(100) comment '转载来源链接url',
examine_status int(4) comment '文章审核状态 0 待审核 1 已审核 2、已驳回',
examine_time datetime comment '文章审核时间',
browse_num int(11) comment '浏览次数',
fabulous_num int(11) comment '点赞次数',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_information (
id varchar(64) NOT NULL PRIMARY KEY,
article_id varchar(64) not null comment '文章id',
content_id varchar(64) not null comment '内容id',
user_id varchar(64) not null comment '用户id',
classify_id varchar(64) comment '分类id',
tag_id varchar(64) comment '标签id',
type_id int(4) comment '文章类型表id'
);
create table article_content (
id varchar(64) comment '内容id',
content longtext default null COMMENT '内容'
);
create table article_classify (
id varchar(64) not null primary key comment '分类id',
parent_id varchar(64) default 0 comment '父分类id 若为0则父分类',
name varchar(64) comment '分类名称',
status int comment '状态 0删除/弃用 1表示使用',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_tag (
id varchar(64) not null primary key comment '标签id',
name varchar(20) not null comment '标签名称',
status int(2) default 1 comment '状态 0删除/弃用 1表示使用',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_type (
id varchar(64) not null primary key comment '文章类型id',
name varchar(20) comment '文章类型名字',
user_id varchar(64) comment '创建者 用户id',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_fabulous (
id varchar(64) not null primary key comment 'id',
article_id varchar(64) not null comment '文章id',
user_id varchar(64) not null comment '点赞者 用户id',
fabulous_time datetime comment '点赞时间'
);
create table article_discuss (
id varchar(64) not null primary key comment '评论表id',
article_id varchar(64) not null comment '文章id',
user_id varchar(64) not null comment '评论用户id',
content nvarchar(500) default NULL comment '评论内容',
target_user_id varchar(64) not null comment '评论目标用户id',
discuss_time datetime comment '评论时间'
);
create table article_browse (
id varchar(64) not null primary key comment 'id',
article_id varchar(64) not null comment '评论表id',
user_id varchar(64) not null comment '评论用户id',
browse_time datetime comment '评论时间'
);
create table user (
id varchar(64) not null primary key comment '用户id',
username varchar(64) not null comment '用户名',
nickname varchar(64) comment '昵称',
age int(3) comment '用户年龄',
avatar varchar(255) DEFAULT NULL COMMENT '头像',
password varchar(100) comment '用户密码',
phone int(12) comment '用户密码',
email varchar(64) comment '邮箱',
introduction varchar(600) default null comment '用户介绍',
status int(4) comment '用户状态 0启用 1注销',
follow_num int(11) comment '关注数量',
fans_num int(11) comment '粉丝数量',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table user_relation (
id varchar(64) not null primary key comment 'id',
user_id varchar(64) not null comment '用户id',
user_tag_id varchar(64) comment '标签id',
follow_id varchar(64) comment '关注列表id',
fans_id varchar(64) comment '粉丝列表id',
collect_id varchar(64) comment '粉丝列表id'
);
create table user_tag (
id varchar(64) not null primary key comment '标签id',
parent_id varchar(64) default null comment '父标签id null 父标签 其余则为子标签 ',
name varchar(64) comment '标签名称'
);
create table user_follow (
id varchar(64) not null primary key comment 'id',
user_id varchar(64) not null comment '用户id',
user_follow_id varchar(64) not null comment '关注目标用户id'
);
create table user_fans (
id varchar(64) not null primary key comment 'id',
user_id varchar(64) not null comment '用户id',
user_fans_id varchar(64) not null comment '粉丝id'
);
create table user_collect (
id varchar(64) not null primary key comment '收藏夹id',
name varchar(64) not null comment '收藏夹名字',
user_id varchar(64) not null comment '用户id',
article_id varchar(64) not null comment '文章id'
);
create table user_configure (
id varchar(64) not null primary key comment '用户配置id',
user_id varchar(64) not null comment '用户id',
theme_colour int(4) default 0 comment '主题 0 白色 1黑色',
theme_background varchar(50) default null comment '系统背景图片 url String',
editor int default 0 comment '默认编辑器id 0 markdown 1.富文本'
);
create table system_configure (
id varchar(64) not null primary key comment '全局配置表id',
icp varchar(64) default null comment '备案信息',
footer varchar(100) default null comment '页脚信息',
title varchar(50) default '笔记' comment '站点标题',
subtitle varchar(50) default null comment '站点副标题',
site_name varchar(50) default '笔记' comment '站点名称',
register int(4) default 0 comment '注册是否需要邀请码 0不需要 1需要'
);
create table information (
id varchar(64) not null primary key comment '消息id',
user_id varchar(64) not null comment '发送者id 发送者为0 则为系统',
news_content varchar(600) default null comment '内容',
point_user_id varchar(64) not null comment '目标用户id',
images varchar(640) default null comment '图片列表',
send_time datetime comment '发送时间'
);
create table invitation_code (
id varchar(64) not null primary key comment '邀请码id',
code varchar(20) not null comment '邀请码',
status int(2) default 0 comment '状态 0 正常 1失效 ',
use_times int(4) default 10 comment '可以使用的次数',
create_id varchar(64) not null comment '创建者id',
create_time datetime comment '创建时间',
invalid_time datetime comment '失效时间'
);
CREATE TABLE user_role (
id varchar(64) NOT NULL PRIMARY KEY comment '用户角色关联表id',
user_id varchar(64) DEFAULT NULL comment '用户id',
role_id varchar(64) DEFAULT NULL comment '角色id'
);
CREATE TABLE role (
id varchar(64) NOT NULL primary key comment 'id',
name varchar(64) DEFAULT NULL comment '角色名字',
icon varchar(64) DEFAULT NULL comment '角色图标',
description varchar(64) DEFAULT NULL comment '角色介绍',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
CREATE TABLE menu_role (
id varchar(64) NOT NULL PRIMARY KEY comment '角色权限关联表id',
role_id varchar(64) DEFAULT NULL comment '角色id',
menu_id varchar(64) DEFAULT NULL comment '权限id'
);
CREATE TABLE menu (
id varchar(64) NOT NULL primary key comment '权限表id',
name varchar(64) DEFAULT NULL comment '权限名字',
icon varchar(64) DEFAULT NULL comment '权限权限图标',
url varchar(64) DEFAULT NULL comment '权限路径',
parent_id varchar(64) DEFAULT NULL comment '父节点',
description varchar(64) DEFAULT NULL comment '介绍',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
CREATE TABLE user_menu (
id varchar(64) NOT NULL PRIMARY KEY,
user_id varchar(64) DEFAULT NULL,
role_id varchar(64) DEFAULT NULL
);

322
mvnw vendored Normal file
View File

@ -0,0 +1,322 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# 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.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ]; then
if [ -f /etc/mavenrc ]; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ]; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false
darwin=false
mingw=false
case "$(uname)" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true ;;
Darwin*)
darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="$(/usr/libexec/java_home)"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ]; then
if [ -r /etc/gentoo-release ]; then
JAVA_HOME=$(java-config --jre-home)
fi
fi
if [ -z "$M2_HOME" ]; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ]; do
ls=$(ls -ld "$PRG")
link=$(expr "$ls" : '.*-> \(.*\)$')
if expr "$link" : '/.*' >/dev/null; then
PRG="$link"
else
PRG="$(dirname "$PRG")/$link"
fi
done
saveddir=$(pwd)
M2_HOME=$(dirname "$PRG")/..
# make it fully qualified
M2_HOME=$(cd "$M2_HOME" && pwd)
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=$(cygpath --unix "$M2_HOME")
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
[ -n "$CLASSPATH" ] &&
CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw; then
[ -n "$M2_HOME" ] &&
M2_HOME="$( (
cd "$M2_HOME"
pwd
))"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="$( (
cd "$JAVA_HOME"
pwd
))"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="$(which javac)"
if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=$(which readlink)
if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then
if $darwin; then
javaHome="$(dirname \"$javaExecutable\")"
javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac"
else
javaExecutable="$(readlink -f \"$javaExecutable\")"
fi
javaHome="$(dirname \"$javaExecutable\")"
javaHome=$(expr "$javaHome" : '\(.*\)/bin')
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ]; then
if [ -n "$JAVA_HOME" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="$(which java)"
fi
fi
if [ ! -x "$JAVACMD" ]; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ]; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]; then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ]; do
if [ -d "$wdir"/.mvn ]; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=$(
cd "$wdir/.."
pwd
)
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' <"$1")"
fi
}
BASE_DIR=$(find_maven_basedir "$(pwd)")
if [ -z "$BASE_DIR" ]; then
exit 1
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
fi
while IFS="=" read key value; do
case "$key" in wrapperUrl)
jarUrl="$value"
break
;;
esac
done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
fi
if command -v wget >/dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
fi
elif command -v curl >/dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=$(cygpath --path --windows "$javaClass")
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=$(cygpath --path --windows "$M2_HOME")
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
[ -n "$CLASSPATH" ] &&
CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

182
mvnw.cmd vendored Normal file
View File

@ -0,0 +1,182 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. 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,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

127
pom.xml Normal file
View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zyjblogs</groupId>
<artifactId>mydoc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mydoc</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MydocApplication {
public static void main(String[] args) {
SpringApplication.run(MydocApplication.class, args);
}
}

View File

@ -0,0 +1,19 @@
package com.zyjblogs.mydoc.config.mybatisplus;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author zhuyijun
*/
@Configuration
@MapperScan("com.zyjblogs.mydoc.server.*.mapper")
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}

View File

@ -0,0 +1,65 @@
package com.zyjblogs.mydoc.config.redis;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
import com.zyjblogs.mydoc.server.util.data.RedisTemplateService;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* redis配置
*/
@Configuration
public class RedisConfig {
/**
*
* @return
*/
@Bean("redisTemplateService")
public RedisTemplateService redisTemplateService(){
return new RedisTemplateService();
}
/**
* 设置key跟value的序列化方式
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
// 建议使用这种方式小范围指定白名单
ParserConfig.getGlobalInstance().addAccept("com.zyjblogs.mydoc.server");
// 设置值value的序列化采用FastJsonRedisSerializer
redisTemplate.setValueSerializer(fastJsonRedisSerializer);
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
// 设置键key的序列化采用StringRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
/**
* 缓存管理器
* @param redisConnectionFactory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager
.RedisCacheManagerBuilder
.fromConnectionFactory(redisConnectionFactory);
return builder.build();
}
}

View File

@ -0,0 +1,20 @@
package com.zyjblogs.mydoc.config.rest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean("restTemplate")
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
simpleClientHttpRequestFactory.setConnectTimeout(1000);
simpleClientHttpRequestFactory.setReadTimeout(1000);
return new RestTemplate(simpleClientHttpRequestFactory);
}
}

View File

@ -0,0 +1,191 @@
package com.zyjblogs.mydoc.config.security;
import com.zyjblogs.mydoc.server.user.filter.TokenAuthenticationFilter;
import com.zyjblogs.mydoc.server.user.handler.*;
import com.zyjblogs.mydoc.server.user.login.service.impl.LoginUserServiceImpl;
import com.zyjblogs.mydoc.server.user.provider.UserAuthenticationProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;
import javax.sql.DataSource;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MyAccessDeniedHandler accessDeniedHandler;
@Autowired
UserAuthenticationEntryPoint authenticationEntryPoint;
@Autowired
private DataSource dataSource;
@Autowired
private PersistentTokenRepository persistentTokenRepository;
@Autowired
LoginUserServiceImpl loginUserService;
@Autowired
UserAuthenticationSuccessHandler authenticationSuccessHandler;
@Autowired
UserAuthenticationFailureHandler authenticationFailureHandler;
@Autowired
UserLogoutSuccessHandler logoutSuccessHandler;
@Autowired
private TokenAuthenticationFilter tokenAuthenticationFilter;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
/**
* 处理 rememberMe 自动登录认证
*
* @return
*/
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
jdbcTokenRepository.setDataSource(dataSource);
//自动建表第一次启动时开启第二次启动时注释掉
jdbcTokenRepository.setCreateTableOnStartup(false);
return jdbcTokenRepository;
}
@Bean
public PasswordEncoder getPw() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http // 使用 JWT使用无状态会话不需要session
// .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
// //配置 Http Basic 验证
// .and()
// .httpBasic()
//
// .and()
/**
* 表单提交
*/
.formLogin()
//自定义用户名密码入参
.usernameParameter("userName")
.passwordParameter("passWord")
//自定义登录页面
.loginPage("/login.html")
// .loginPage("/showLogin")
//必须和表单提交的接口一样获取执行自定义登录逻辑
.loginProcessingUrl("/login")
//登录成功后跳转的页面必须是POST请求
// .successForwardUrl("/toMain")
//自定义登录成功处理器
// .successHandler(new MyAuthenticationSuccessHandler("/toMain"))
// 登录成功
.successHandler(authenticationSuccessHandler)
// 登录失败
.failureHandler(authenticationFailureHandler)
//登录失败后转跳的页面必须是POST请求
.failureForwardUrl("/toError")
/**
* remeberMe记住我
*/
.and()
.rememberMe()
//设置数据源
.tokenRepository(persistentTokenRepository)
// .rememberMeParameter()
.tokenValiditySeconds(600)
//自定义登录逻辑
.userDetailsService(loginUserService)
/**
* 退出
*/
.and()
.logout()
// .logoutUrl("/user/logout")
// .logoutUrl("/logout")
// .logoutSuccessHandler(new MyLogoutSuccessHandler("/login.html"))
// .logoutSuccessUrl("/login.html")
.logoutSuccessHandler(logoutSuccessHandler)
/**
* 授权
*/
.and()
//拦截是有顺序的从上往下.anyRequest().authenticated()需放最后
.authorizeRequests()
.antMatchers("/login/**", "/static/**,/doc.html", "/login.html", "/toError").permitAll()
.anyRequest()
// .permitAll()
// RBAC 动态 url 认证
.access("@rbacServiceImpl.hasPermission(request, authentication)")
// .anyRequest().authenticated()
.and()
//配置 Http Basic 验证
.httpBasic()
//匿名用户异常拦截处理器
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.exceptionHandling().accessDeniedHandler(accessDeniedHandler)
/**
* csrf防护
*/
.and()
.csrf().disable()
// 前后端分离采用JWT 不需要session
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
//将JWT Token Filter验证配置到Spring Security
.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
}
/**
* @Description Spring security认证Bean
* @Date 2019/7/4 17:39
* @Version 1.0
*/
@Bean
public AuthenticationProvider authenticationProvider() {
AuthenticationProvider authenticationProvider = new UserAuthenticationProvider();
return authenticationProvider;
}
/**
* @Description Spring Security认证服务中的相关实现重新定义
* @Date 2019/7/4 17:40
* @Version 1.0
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 加入自定义的安全认证
auth.userDetailsService(this.userDetailsService()).passwordEncoder(this.passwordEncoder());
auth.authenticationProvider(this.authenticationProvider());
}
}

View File

@ -0,0 +1,52 @@
package com.zyjblogs.mydoc.config.swagger;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
* copyright (C), 2020, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2020/12/29 12:12 1.0
* @program mydoc
* @description
* @create 2020/12/29 12:12
*/
@Configuration
@EnableSwagger2WebMvc
@EnableKnife4j
@ConditionalOnProperty(value = {"true"}, matchIfMissing = true)
public class Knife4jConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.zyjblogs.mydoc.server"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
Contact contact = new Contact("zhuyijun", "http://localhost:9029/doc.html", "zhuyijun@hatech.com.cn");
return new ApiInfoBuilder()
.title("SpringBoot项目 后台服务API接口文档")
.description("使用 knife4j 搭建的后台服务API接口文档")
.termsOfServiceUrl("http://localhost:9029/")
.contact(contact)
.version("1.0.0")
.build();
}
}

View File

@ -0,0 +1,15 @@
package com.zyjblogs.mydoc.server.article.contant;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:55 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:55
*/
public class ArticleConstants {
}

View File

@ -0,0 +1,20 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 16:07 1.0
* @program mydoc
* @description
* @create 2021/1/6 16:07
*/
@RequestMapping("/article/browse")
@RestController
public class ArticleBrowseController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/classify")
public class ArticleClassifyController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/content")
public class ArticleContentController {
}

View File

@ -0,0 +1,20 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:55 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:55
*/
@RestController
@RequestMapping("/article")
public class ArticleController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/discuss")
public class ArticleDiscussController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/fabulous")
public class ArticleFabulousController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/information")
public class ArticleInformationController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/tag")
public class ArticleTagController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/article/type")
public class ArticleTypeController {
}

View File

@ -0,0 +1,39 @@
package com.zyjblogs.mydoc.server.article.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:56 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:56
*/
@Data
public class ArticleBrowseDTO {
/**
* id
*/
private String id;
/**
* 评论表id
*/
private String articleId;
/**
* 评论用户id
*/
private String userId;
/**
* 评论时间
*/
private LocalDateTime browseTime;
}

View File

@ -0,0 +1,33 @@
package com.zyjblogs.mydoc.server.article.dto;
import com.zyjblogs.mydoc.server.user.dto.BaseDTO;
import lombok.Data;
@Data
public class ArticleClassifyDTO extends BaseDTO {
/**
* 分类id
*/
private String id;
/**
* 父分类id 若为0则父分类
*/
private String parentId;
/**
* 分类名称
*/
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
private Integer status;
}

View File

@ -0,0 +1,17 @@
package com.zyjblogs.mydoc.server.article.dto;
import lombok.Data;
@Data
public class ArticleContentDTO {
/**
* 内容id
*/
private String id;
/**
* 内容
*/
private String content;
}

View File

@ -0,0 +1,68 @@
package com.zyjblogs.mydoc.server.article.dto;
import com.zyjblogs.mydoc.server.util.page.PaginationQuery;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ArticleDTO extends PaginationQuery {
/**
* 文章id
*/
private String id;
/**
* 作者id
*/
private String userId;
/**
* 显示状态 0 私密 1 公开 2不显示 3删除
*/
private Integer status;
/**
* 原创 0 原创 1 转载
*/
private Integer original;
/**
* 转载来源链接url
*/
private String reprintLink;
/**
* 文章审核状态 0 待审核 1 已审核 2已驳回
*/
private Integer examineStatus;
/**
* 文章审核时间
*/
private LocalDateTime examineTime;
/**
* 浏览次数
*/
private Integer browseNum;
/**
* 点赞次数
*/
private Integer fabulousNum;
/**
* 简介
*/
private String description;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,44 @@
package com.zyjblogs.mydoc.server.article.dto;
import com.zyjblogs.mydoc.server.util.page.PaginationQuery;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author zhuyijun
*/
@Data
public class ArticleDiscussDTO extends PaginationQuery {
/**
* 评论表id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 评论用户id
*/
private String userId;
/**
* 评论内容
*/
private String content;
/**
* 评论目标用户id
*/
private String targetUserId;
/**
* 评论时间
*/
private LocalDateTime discussTime;
}

View File

@ -0,0 +1,32 @@
package com.zyjblogs.mydoc.server.article.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ArticleFabulousDTO {
/**
* id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 点赞者 用户id
*/
private String userId;
/**
* 点赞时间
*/
private LocalDateTime fabulousTime;
}

View File

@ -0,0 +1,45 @@
package com.zyjblogs.mydoc.server.article.dto;
import lombok.Data;
/**
* @author zhuyijun
*/
@Data
public class ArticleInformationDTO {
/**
* id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 内容id
*/
private String contentId;
/**
* 用户id
*/
private String userId;
/**
* 分类id
*/
private String classifyId;
/**
* 标签id
*/
private String tagId;
/**
* 文章类型表id
*/
private Integer typeId;
}

View File

@ -0,0 +1,23 @@
package com.zyjblogs.mydoc.server.article.dto;
import com.zyjblogs.mydoc.server.user.dto.BaseDTO;
import lombok.Data;
@Data
public class ArticleTagDTO extends BaseDTO {
/**
* 标签id
*/
private String id;
/**
* 标签名称
*/
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
private Integer status;
}

View File

@ -0,0 +1,25 @@
package com.zyjblogs.mydoc.server.article.dto;
import com.zyjblogs.mydoc.server.user.dto.BaseDTO;
import lombok.Data;
@Data
public class ArticleTypeDTO extends BaseDTO {
/**
* 文章类型id
*/
private String id;
/**
* 文章类型名字
*/
private String name;
/**
* 创建者 用户id
*/
private String userId;
}

View File

@ -0,0 +1,20 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleBrowsePO;
import org.mapstruct.Mapper;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 16:07 1.0
* @program mydoc
* @description
* @create 2021/1/6 16:07
*/
@Mapper
public interface ArticleBrowseMapper extends BaseMapper<ArticleBrowsePO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleClassifyPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleClassifyMapper extends BaseMapper<ArticleClassifyPO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleContentPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleContentMapper extends BaseMapper<ArticleContentPO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleDiscussPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleDiscussMapper extends BaseMapper<ArticleDiscussPO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleFabulousPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleFabulousMapper extends BaseMapper<ArticleFabulousPO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleInformationPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleInformationMapper extends BaseMapper<ArticleInformationPO> {
}

View File

@ -0,0 +1,20 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticlePO;
import org.mapstruct.Mapper;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:53 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:53
*/
@Mapper
public interface ArticleMapper extends BaseMapper<ArticlePO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleTagPO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleTagMapper extends BaseMapper<ArticleTagPO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.article.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleTypePO;
import org.mapstruct.Mapper;
@Mapper
public interface ArticleTypeMapper extends BaseMapper<ArticleTypePO> {
}

View File

@ -0,0 +1,59 @@
package com.zyjblogs.mydoc.server.article.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:56 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:56
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_browse")
public class ArticleBrowsePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 评论表id
*/
@TableField("article_id")
private String articleId;
/**
* 评论用户id
*/
@TableField("user_id")
private String userId;
/**
* 评论时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("browse_time")
private LocalDateTime browseTime;
}

View File

@ -0,0 +1,50 @@
package com.zyjblogs.mydoc.server.article.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zyjblogs.mydoc.server.user.po.BasePO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_classify")
public class ArticleClassifyPO extends BasePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 分类id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 父分类id 若为0则父分类
*/
@TableField("parent_id")
private String parentId;
/**
* 分类名称
*/
@TableField("name")
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
@TableField("status")
private Integer status;
}

View File

@ -0,0 +1,35 @@
package com.zyjblogs.mydoc.server.article.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_content")
public class ArticleContentPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 内容id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 内容
*/
@TableField("content")
private String content;
}

View File

@ -0,0 +1,66 @@
package com.zyjblogs.mydoc.server.article.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author zhuyijun
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_discuss")
public class ArticleDiscussPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 评论表id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 文章id
*/
@TableField("article_id")
private String articleId;
/**
* 评论用户id
*/
@TableField("user_id")
private String userId;
/**
* 评论内容
*/
@TableField("content")
private String content;
/**
* 评论目标用户id
*/
@TableField("target_user_id")
private String targetUserId;
/**
* 评论时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("discuss_time")
private LocalDateTime discussTime;
}

View File

@ -0,0 +1,52 @@
package com.zyjblogs.mydoc.server.article.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_fabulous")
public class ArticleFabulousPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 文章id
*/
@TableField("article_id")
private String articleId;
/**
* 点赞者 用户id
*/
@TableField("user_id")
private String userId;
/**
* 点赞时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("fabulous_time")
private LocalDateTime fabulousTime;
}

View File

@ -0,0 +1,68 @@
package com.zyjblogs.mydoc.server.article.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author zhuyijun
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_information")
public class ArticleInformationPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 文章id
*/
@TableField("article_id")
private String articleId;
/**
* 内容id
*/
@TableField("content_id")
private String contentId;
/**
* 用户id
*/
@TableField("user_id")
private String userId;
/**
* 分类id
*/
@TableField("classify_id")
private String classifyId;
/**
* 标签id
*/
@TableField("tag_id")
private String tagId;
/**
* 文章类型表id
*/
@TableField("type_id")
private Integer typeId;
}

View File

@ -0,0 +1,82 @@
package com.zyjblogs.mydoc.server.article.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zyjblogs.mydoc.server.user.po.BasePO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article")
public class ArticlePO extends BasePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 文章id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 作者id
*/
@TableField("user_id")
private String userId;
/**
* 显示状态 0 私密 1 公开 2不显示 3删除
*/
@TableField("status")
private Integer status;
/**
* 原创 0 原创 1 转载
*/
@TableField("original")
private Integer original;
/**
* 转载来源链接url
*/
@TableField("reprint_link")
private String reprintLink;
/**
* 文章审核状态 0 待审核 1 已审核 2已驳回
*/
@TableField("examine_status")
private Integer examineStatus;
/**
* 文章审核时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("examine_time")
private LocalDateTime examineTime;
/**
* 浏览次数
*/
@TableField("browse_num")
private Integer browseNum;
/**
* 点赞次数
*/
@TableField("fabulous_num")
private Integer fabulousNum;
}

View File

@ -0,0 +1,42 @@
package com.zyjblogs.mydoc.server.article.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zyjblogs.mydoc.server.user.po.BasePO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_tag")
public class ArticleTagPO extends BasePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 标签id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 标签名称
*/
@TableField("name")
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
@TableField("status")
private Integer status;
}

View File

@ -0,0 +1,42 @@
package com.zyjblogs.mydoc.server.article.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zyjblogs.mydoc.server.user.po.BasePO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("article_type")
public class ArticleTypePO extends BasePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 文章类型id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 文章类型名字
*/
@TableField("name")
private String name;
/**
* 创建者 用户id
*/
@TableField("user_id")
private String userId;
}

View File

@ -0,0 +1,18 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleBrowsePO;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 16:06 1.0
* @program mydoc
* @description
* @create 2021/1/6 16:06
*/
public interface ArticleBrowseService extends IService<ArticleBrowsePO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleClassifyPO;
public interface ArticleClassifyService extends IService<ArticleClassifyPO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleContentPO;
public interface ArticleContentService extends IService<ArticleContentPO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleDiscussPO;
public interface ArticleDiscussService extends IService<ArticleDiscussPO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleFabulousPO;
public interface ArticleFabulousService extends IService<ArticleFabulousPO> {
}

View File

@ -0,0 +1,8 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleInformationPO;
public interface ArticleInformationService extends IService<ArticleInformationPO> {
}

View File

@ -0,0 +1,18 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticlePO;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:52 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:52
*/
public interface ArticleService extends IService<ArticlePO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleTagPO;
public interface ArticleTagService extends IService<ArticleTagPO> {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.article.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.article.po.ArticleTypePO;
public interface ArticleTypeService extends IService<ArticleTypePO> {
}

View File

@ -0,0 +1,22 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleBrowseMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleBrowsePO;
import com.zyjblogs.mydoc.server.article.service.ArticleBrowseService;
import org.springframework.stereotype.Service;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 16:06 1.0
* @program mydoc
* @description
* @create 2021/1/6 16:06
*/
@Service
public class ArticleBrowseServiceImpl extends ServiceImpl<ArticleBrowseMapper, ArticleBrowsePO> implements ArticleBrowseService {
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleClassifyMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleClassifyPO;
import com.zyjblogs.mydoc.server.article.service.ArticleClassifyService;
import org.springframework.stereotype.Service;
@Service
public class ArticleClassifyServiceImpl extends ServiceImpl<ArticleClassifyMapper, ArticleClassifyPO> implements ArticleClassifyService {
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleContentMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleContentPO;
import com.zyjblogs.mydoc.server.article.service.ArticleContentService;
import org.springframework.stereotype.Service;
@Service
public class ArticleContentServiceImpl extends ServiceImpl<ArticleContentMapper, ArticleContentPO> implements ArticleContentService {
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleDiscussMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleDiscussPO;
import com.zyjblogs.mydoc.server.article.service.ArticleDiscussService;
import org.springframework.stereotype.Service;
@Service
public class ArticleDiscussServiceImpl extends ServiceImpl<ArticleDiscussMapper, ArticleDiscussPO> implements ArticleDiscussService {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleFabulousMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleFabulousPO;
import com.zyjblogs.mydoc.server.article.service.ArticleFabulousService;
import org.springframework.stereotype.Service;
@Service
public class ArticleFabulousServiceImpl extends ServiceImpl<ArticleFabulousMapper, ArticleFabulousPO> implements ArticleFabulousService {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleInformationMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleInformationPO;
import com.zyjblogs.mydoc.server.article.service.ArticleInformationService;
import org.springframework.stereotype.Service;
@Service
public class ArticleInformationServiceImpl extends ServiceImpl<ArticleInformationMapper, ArticleInformationPO> implements ArticleInformationService {
}

View File

@ -0,0 +1,24 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleMapper;
import com.zyjblogs.mydoc.server.article.po.ArticlePO;
import com.zyjblogs.mydoc.server.article.service.ArticleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:52 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:52
*/
@Service
@Slf4j
public class ArticleServiceImpl extends ServiceImpl<ArticleMapper, ArticlePO> implements ArticleService {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleTagMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleTagPO;
import com.zyjblogs.mydoc.server.article.service.ArticleTagService;
import org.springframework.stereotype.Service;
@Service
public class ArticleTagServiceImpl extends ServiceImpl<ArticleTagMapper, ArticleTagPO> implements ArticleTagService {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.article.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.article.mapper.ArticleTypeMapper;
import com.zyjblogs.mydoc.server.article.po.ArticleTypePO;
import com.zyjblogs.mydoc.server.article.service.ArticleTypeService;
import org.springframework.stereotype.Service;
@Service
public class ArticleTypeServiceImpl extends ServiceImpl<ArticleTypeMapper, ArticleTypePO> implements ArticleTypeService {
}

View File

@ -0,0 +1,39 @@
package com.zyjblogs.mydoc.server.article.vo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* copyright (C), 2021, 北京同创永益科技发展有限公司
*
* @author zhuyijun
* @version 1.0.0
* <author> <time> <version> <description>
* zhuyijun 2021/1/6 15:56 1.0
* @program mydoc
* @description
* @create 2021/1/6 15:56
*/
@Data
public class ArticleBrowseVO {
/**
* id
*/
private String id;
/**
* 评论表id
*/
private String articleId;
/**
* 评论用户id
*/
private String userId;
/**
* 评论时间
*/
private LocalDateTime browseTime;
}

View File

@ -0,0 +1,33 @@
package com.zyjblogs.mydoc.server.article.vo;
import com.zyjblogs.mydoc.server.user.vo.BaseVO;
import lombok.Data;
@Data
public class ArticleClassifyVO extends BaseVO {
/**
* 分类id
*/
private String id;
/**
* 父分类id 若为0则父分类
*/
private String parentId;
/**
* 分类名称
*/
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
private Integer status;
}

View File

@ -0,0 +1,17 @@
package com.zyjblogs.mydoc.server.article.vo;
import lombok.Data;
@Data
public class ArticleContentVO {
/**
* 内容id
*/
private String id;
/**
* 内容
*/
private String content;
}

View File

@ -0,0 +1,43 @@
package com.zyjblogs.mydoc.server.article.vo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author zhuyijun
*/
@Data
public class ArticleDiscussVO {
/**
* 评论表id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 评论用户id
*/
private String userId;
/**
* 评论内容
*/
private String content;
/**
* 评论目标用户id
*/
private String targetUserId;
/**
* 评论时间
*/
private LocalDateTime discussTime;
}

View File

@ -0,0 +1,32 @@
package com.zyjblogs.mydoc.server.article.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ArticleFabulousVO {
/**
* id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 点赞者 用户id
*/
private String userId;
/**
* 点赞时间
*/
private LocalDateTime fabulousTime;
}

View File

@ -0,0 +1,47 @@
package com.zyjblogs.mydoc.server.article.vo;
import lombok.Data;
/**
* @author zhuyijun
*/
@Data
public class ArticleInformationVO {
/**
* id
*/
private String id;
/**
* 文章id
*/
private String articleId;
/**
* 内容id
*/
private String contentId;
/**
* 用户id
*/
private String userId;
/**
* 分类id
*/
private String classifyId;
/**
* 标签id
*/
private String tagId;
/**
* 文章类型表id
*/
private Integer typeId;
}

View File

@ -0,0 +1,23 @@
package com.zyjblogs.mydoc.server.article.vo;
import com.zyjblogs.mydoc.server.user.vo.BaseVO;
import lombok.Data;
@Data
public class ArticleTagVO extends BaseVO {
/**
* 标签id
*/
private String id;
/**
* 标签名称
*/
private String name;
/**
* 状态 0删除/弃用 1表示使用
*/
private Integer status;
}

View File

@ -0,0 +1,25 @@
package com.zyjblogs.mydoc.server.article.vo;
import com.zyjblogs.mydoc.server.user.vo.BaseVO;
import lombok.Data;
@Data
public class ArticleTypeVO extends BaseVO {
/**
* 文章类型id
*/
private String id;
/**
* 文章类型名字
*/
private String name;
/**
* 创建者 用户id
*/
private String userId;
}

View File

@ -0,0 +1,57 @@
package com.zyjblogs.mydoc.server.article.vo;
import com.zyjblogs.mydoc.server.user.vo.BaseVO;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ArticleVO extends BaseVO {
/**
* 文章id
*/
private String id;
/**
* 作者id
*/
private String userId;
/**
* 显示状态 0 私密 1 公开 2不显示 3删除
*/
private Integer status;
/**
* 原创 0 原创 1 转载
*/
private Integer original;
/**
* 转载来源链接url
*/
private String reprintLink;
/**
* 文章审核状态 0 待审核 1 已审核 2已驳回
*/
private Integer examineStatus;
/**
* 文章审核时间
*/
private LocalDateTime examineTime;
/**
* 浏览次数
*/
private Integer browseNum;
/**
* 点赞次数
*/
private Integer fabulousNum;
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.message.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/message/information")
public class InformationController {
}

View File

@ -0,0 +1,42 @@
package com.zyjblogs.mydoc.server.message.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class InformationDTO {
/**
* 消息id
*/
private String id;
/**
* 发送者id 发送者为0 则为系统
*/
private String userId;
/**
* 内容
*/
private String newsContent;
/**
* 目标用户id
*/
private String pointUserId;
/**
* 图片列表
*/
private String images;
/**
* 发送时间
*/
private LocalDateTime sendTime;
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.message.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.message.po.InformationPO;
import org.mapstruct.Mapper;
@Mapper
public interface InformationMapper extends BaseMapper<InformationPO> {
}

View File

@ -0,0 +1,64 @@
package com.zyjblogs.mydoc.server.message.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("information")
public class InformationPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 消息id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 发送者id 发送者为0 则为系统
*/
@TableField("user_id")
private String userId;
/**
* 内容
*/
@TableField("news_content")
private String newsContent;
/**
* 目标用户id
*/
@TableField("point_user_id")
private String pointUserId;
/**
* 图片列表
*/
@TableField("images")
private String images;
/**
* 发送时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("send_time")
private LocalDateTime sendTime;
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.message.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.message.mapper.InformationMapper;
import com.zyjblogs.mydoc.server.message.po.InformationPO;
import com.zyjblogs.mydoc.server.message.service.InformationService;
import org.springframework.stereotype.Service;
@Service
public class InformationServiceImpl extends ServiceImpl<InformationMapper, InformationPO> implements InformationService {
}

View File

@ -0,0 +1,9 @@
package com.zyjblogs.mydoc.server.message.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyjblogs.mydoc.server.message.po.InformationPO;
public interface InformationService extends IService<InformationPO> {
}

View File

@ -0,0 +1,42 @@
package com.zyjblogs.mydoc.server.message.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class InformationVO {
/**
* 消息id
*/
private String id;
/**
* 发送者id 发送者为0 则为系统
*/
private String userId;
/**
* 内容
*/
private String newsContent;
/**
* 目标用户id
*/
private String pointUserId;
/**
* 图片列表
*/
private String images;
/**
* 发送时间
*/
private LocalDateTime sendTime;
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.system.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/invitationcode")
public class InvitationCodeController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.system.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/configure")
public class SystemConfigureController {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.system.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/user/configure")
public class UserConfigureController {
}

View File

@ -0,0 +1,49 @@
package com.zyjblogs.mydoc.server.system.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 注册邀请码
*/
@Data
public class InvitationCodeDTO {
/**
* 邀请码id
*/
private String id;
/**
* 邀请码
*/
private String code;
/**
* 状态 0 正常 1失效
*/
private Integer status;
/**
* 可以使用的次数
*/
private Integer useTimes;
/**
* 创建者id
*/
private String createId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 失效时间
*/
private LocalDateTime invalidTime;
}

View File

@ -0,0 +1,45 @@
package com.zyjblogs.mydoc.server.system.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class SystemConfigureDTO implements Serializable {
/**
* 全局配置表id
*/
private String id;
/**
* 备案信息
*/
private String icp;
/**
* 页脚信息
*/
private String footer;
/**
* 站点标题
*/
private String title;
/**
* 站点副标题
*/
private String subTitle;
/**
* 站点名称
*/
private String siteName;
/**
* 注册是否需要邀请码 0不需要 1需要
*/
private Integer register;
}

View File

@ -0,0 +1,32 @@
package com.zyjblogs.mydoc.server.system.dto;
import lombok.Data;
@Data
public class UserConfigureDTO {
/**
* 用户配置id
*/
private String id;
/**
* 用户id
*/
private String userId;
/**
* 主题 0 白色 1黑色
*/
private Integer themeColour;
/**
* 系统背景图片 url String
*/
private String themeBackground;
/**
* 默认编辑器id 0 markdown 1.富文本
*/
private Integer editor;
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.system.po.InvitationCodePO;
import org.mapstruct.Mapper;
@Mapper
public interface InvitationCodeMapper extends BaseMapper<InvitationCodePO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.system.po.SystemConfigurePO;
import org.mapstruct.Mapper;
@Mapper
public interface SystemConfigureMapper extends BaseMapper<SystemConfigurePO> {
}

View File

@ -0,0 +1,10 @@
package com.zyjblogs.mydoc.server.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyjblogs.mydoc.server.system.po.UserConfigurePO;
import org.mapstruct.Mapper;
@Mapper
public interface UserConfigureMapper extends BaseMapper<UserConfigurePO> {
}

View File

@ -0,0 +1,73 @@
package com.zyjblogs.mydoc.server.system.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 注册邀请码
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("invitation_code")
public class InvitationCodePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 邀请码id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 邀请码
*/
@TableField("user_id")
private String code;
/**
* 状态 0 正常 1失效
*/
@TableField("status")
private Integer status;
/**
* 可以使用的次数
*/
@TableField("use_times")
private Integer useTimes;
/**
* 创建者id
*/
@TableField("create_id")
private String createId;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("create_time")
private LocalDateTime createTime;
/**
* 失效时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@TableField("invalid_time")
private LocalDateTime invalidTime;
}

View File

@ -0,0 +1,64 @@
package com.zyjblogs.mydoc.server.system.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("system_configure")
public class SystemConfigurePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 全局配置表id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 备案信息
*/
@TableField("icp")
private String icp;
/**
* 页脚信息
*/
@TableField("footer")
private String footer;
/**
* 站点标题
*/
@TableField("title")
private String title;
/**
* 站点副标题
*/
@TableField("sub_title")
private String subTitle;
/**
* 站点名称
*/
@TableField("site_name")
private String siteName;
/**
* 注册是否需要邀请码 0不需要 1需要
*/
@TableField("register")
private Integer register;
}

View File

@ -0,0 +1,55 @@
package com.zyjblogs.mydoc.server.system.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("user_configure")
public class UserConfigurePO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户配置id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 用户id
*/
@TableField("user_id")
private String userId;
/**
* 主题 0 白色 1黑色
*/
@TableField("theme_colour")
private Integer themeColour;
/**
* 系统背景图片 url String
*/
@TableField("theme_background")
private String themeBackground;
/**
* 默认编辑器id 0 markdown 1.富文本
*/
@TableField("editor")
private Integer editor;
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.system.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.system.mapper.InvitationCodeMapper;
import com.zyjblogs.mydoc.server.system.po.InvitationCodePO;
import com.zyjblogs.mydoc.server.system.service.InvitationCodeService;
import org.springframework.stereotype.Service;
@Service
public class InvitationCodeServiceImpl extends ServiceImpl<InvitationCodeMapper, InvitationCodePO> implements InvitationCodeService {
}

View File

@ -0,0 +1,14 @@
package com.zyjblogs.mydoc.server.system.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.system.mapper.SystemConfigureMapper;
import com.zyjblogs.mydoc.server.system.po.SystemConfigurePO;
import com.zyjblogs.mydoc.server.system.service.SystemConfigureService;
import org.springframework.stereotype.Service;
@Service
public class SystemConfigureServiceImpl extends ServiceImpl<SystemConfigureMapper, SystemConfigurePO> implements SystemConfigureService {
}

View File

@ -0,0 +1,13 @@
package com.zyjblogs.mydoc.server.system.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.system.mapper.UserConfigureMapper;
import com.zyjblogs.mydoc.server.system.po.UserConfigurePO;
import com.zyjblogs.mydoc.server.system.service.UserConfigureService;
import org.springframework.stereotype.Service;
@Service
public class UserConfigureServiceImpl extends ServiceImpl<UserConfigureMapper, UserConfigurePO> implements UserConfigureService {
}

Some files were not shown because too many files have changed in this diff Show More