资源下载链路打通

This commit is contained in:
limqhz
2022-05-03 17:15:54 +08:00
parent f44f36356d
commit f271221d8b
39 changed files with 888 additions and 312 deletions

View File

@@ -1 +1,8 @@
spring.profiles.active=dev
oss.accessKeyId=LTAIlbtS4W2Xe4OV
oss.accessKeySecret=qWMYkSfmXFtRoIv9q9OCbszcF9U7dX
oss.protocol=http
oss.name=smartvenue
oss.endPoint=http://oss-cn-beijing.aliyuncs.com
oss.url=https://smartvenue.oss-cn-beijing.aliyuncs.com/

View File

@@ -299,19 +299,19 @@ div {
@-webkit-keyframes zeroFour {
0% {
content: "4";
content: "";
}
100% {
content: "0";
content: "";
}
}
@keyframes zeroFour {
0% {
content: "4";
content: "";
}
100% {
content: "0";
content: "";
}
}

View File

@@ -62,8 +62,8 @@ try {
"mouseover": [
{ "selector": ".container a[href^='http']", "text": ["要看看 <span style=\"color:#0099cc;\">{text}</span> 么?"] },
{ "selector": ".fui-home", "text": ["点击前往首页,想回到上一页可以使用浏览器的后退功能哦"] },
{ "selector": ".fui-chat", "text": ["一言一语,一颦一笑。一字一句,一颗赛艇。"] },
{ "selector": ".fui-eye", "text": ["嗯··· 要切换 看板娘 吗?"] },
{ "selector": ".fui-chat", "text": ["我们来干点 鸡汤 吧?"] },
{ "selector": ".fui-eye", "text": ["嗯··· 要切换 角色 吗?"] },
{ "selector": ".fui-user", "text": ["喜欢换装 Play 吗?"] },
{ "selector": ".fui-photo", "text": ["要拍张纪念照片吗?"] },
{ "selector": ".fui-info-circle", "text": ["这里有关于我的信息呢"] },
@@ -124,10 +124,15 @@ try {
;
live2d_settings['hitokotoAPI'] = 'hitokoto.cn';
live2d_settings['modelId'] = 5;
live2d_settings['modelTexturesId'] = 1;
live2d_settings['homePageUrl'] = 'index';
live2d_settings['modelId'] = 2;
live2d_settings['modelTexturesId'] = 22;
live2d_settings['modelStorage'] = false;
live2d_settings['canTurnToAboutPage'] = false;
live2d_settings['screenshotCaptureName']= 'quinn.png';
live2d_settings['waifuEdgeSide'] = 'left:0'; // 看板娘贴边方向,例如 'left:0'(靠左 0px), 'right:30'(靠右 30px)
live2d_settings['waifuDraggable'] = 'unlimited'; // 拖拽样式,例如 'disable'(禁用), 'axis-x'(只能水平拖拽), 'unlimited'(自由拖拽)
live2d_settings['waifuDraggableRevert'] = true; // 松开鼠标还原拖拽位置,可选 true(真), false(假)
initModel(modelJson);
}
});

View File

@@ -32,9 +32,9 @@
<a href="#" th:text="${blog.getAuthorName()}"></a>
<span>
<svg class="bi bi-eye-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z"/>
<path fill-rule="evenodd" d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z"/>
</svg>
<path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z"/>
<path fill-rule="evenodd" d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z"/>
</svg>
[[${blog.getViews()}]]
</span>
<!-- 自己写的文章可以编辑和删除 -->

View File

@@ -27,10 +27,10 @@
<a class="nav-link" th:href="@{/blog}">博客 </a>
</li>
<li th:class="${activeUrl=='download'?'nav-item active':'nav-item'}">
<a class="nav-link" th:href="@{/download}">资源 </a>
<a class="nav-link" th:href="@{/download}">热门资源 </a>
</li>
<li th:class="${activeUrl=='say'?'nav-item active':'nav-item'}">
<a class="nav-link" th:href="@{/say}">公告 </a>
<li th:class="${activeUrl=='source'?'nav-item active':'nav-item'}">
<a class="nav-link" th:href="@{/source?name=&category=0}">资源库 </a>
</li>
<li th:class="${activeUrl=='about'?'nav-item active':'nav-item'}">
<a class="nav-link" th:href="@{/about}">关于 </a>

View File

@@ -1,51 +0,0 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>404-Quinn</title>
<link rel="stylesheet" th:href="@{/css/error.css}">
</head>
<body>
<div class="NotPage">
<div class="message"><a th:href="@{/index}" style="color: white">没有此页面,点击回主页</a></div>
<div class="message2" style="text-align: center"><a style="color: white">Quinn</a></div>
<div class="rail">
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
</div>
<div class="world">
<div class="forward">
<div class="box">
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>ERROR-Quinn</title>
<link rel="stylesheet" th:href="@{/css/error.css}">
</head>
<body>
<div class="NotPage">
<div class="message"><a th:href="@{/index}" style="color: white">没有此页面,点击回主页</a></div>
<div class="message2" style="text-align: center"><a style="color: white">Quinn-资源丢失</a></div>
<img th:src="@{/images/logo/logo.png}">
</div>
</body>
</html>

View File

@@ -3,48 +3,15 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>5xx-Quinn</title>
<title>ERROR-Quinn</title>
<link rel="stylesheet" th:href="@{/css/error.css}">
</head>
<body>
<div class="NotPage">
<div class="message"><a th:href="@{/index}" style="color: white">没有此页面,点击回主页</a></div>
<div class="message2" style="text-align: center"><a style="color: white">Quinn</a></div>
<div class="rail">
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
<div class="stamp four">4</div>
<div class="stamp zero">0</div>
</div>
<div class="world">
<div class="forward">
<div class="box">
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
<div class="wall"></div>
</div>
</div>
</div>
<div class="message2" style="text-align: center"><a style="color: white">Quinn-资源丢失</a></div>
<img th:src="@{/images/logo/logo.png}">
</div>
</body>

View File

@@ -13,43 +13,45 @@
<div th:replace="~{common/header::header(activeUrl='about')}"></div>
<main role="main">
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img th:src="@{/images/menu/t1.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item">
<img th:src="@{/images/menu/t2.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
</div>
</div>
<div class="carousel-item">
<img th:src="@{/images/menu/t3.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
<div class="container">
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img th:src="@{/images/menu/t1.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item">
<img th:src="@{/images/menu/t2.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
</div>
</div>
<div class="carousel-item">
<img th:src="@{/images/menu/t3.jpg}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleCaptions" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleCaptions" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
</main>

View File

@@ -1,70 +0,0 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>公告-Quinn</title>
<link rel="stylesheet" th:href="@{/bootstrap/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/timeline.css}">
</head>
<body>
<div th:replace="~{common/header::header(activeUrl='say')}"></div>
<main role="main">
<div class="container">
<div th:if="${session.loginUser.getRoleId()==1}"
class="col-md-12 blog-main" style="margin-top: 20px">
<form th:action="@{'/say/'+${session.loginUser.getRoleId()}}" method="post">
<div class="col-md-12 mb-3">
<label>标题</label>
<input type="text" name="title" class="form-control" value="" required>
</div>
<div class="col-md-12 mb-3">
<label>内容</label>
<div id="blog-content">
<textarea required name="content" rows="3" class="form-control"> </textarea>
</div>
</div>
<div class="col-md-12 mb-3">
<button type="submit" class="btn btn-primary btn-sm btn-block">发布闲记</button>
</div>
</form>
</div>
<!-- 主要内容部分 -->
<div class="timeline-small">
<div class="timeline-small-body">
<ul>
<li th:each="say:${sayList}">
<div class="bullet green"></div>
<div class="desc">
<h3>
[[${say.getTitle()}]]
<small class="float-right" th:text="${#dates.format(say.getGmtCreate(),'yyyy-MM-dd')}"></small>
</h3>
<h4 th:utext="${say.getContent()}"></h4>
</div>
</li>
</ul>
<p class="text-center" style="color: #1F4661"> ...... </p>
</div>
</div>
</div>
</main>
<div th:replace="~{common/footer::footer}"></div>
<a class="to-top">返回顶部</a>
<script th:src="@{/js/jquery-3.5.1.min.js}"></script>
<script th:src="@{/bootstrap/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/js/toTop.js}"></script>
<script th:src="@{/js/jquery-ui.min.js}"></script>
<script th:src="@{/live/js/addlive2d.js}"></script>
</body>
</html>

View File

@@ -0,0 +1,82 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>资源库-Quinn</title>
<link rel="stylesheet" th:href="@{/bootstrap/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/download.css}">
</head>
<body>
<div th:replace="~{common/header::header(activeUrl='source')}"></div>
<main role="main" class="mt-3">
<div class="container">
<form action="/source">
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="name">KEYWORD</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text">关键字</div>
</div>
<input type="text" class="form-control" id="name" name="name" placeholder="请输入关键字"/>
</div>
</div>
<div class="col-auto">
<label class="sr-only" for="category">SOURCE-TYPE</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text">类别</div>
</div>
<select id="category" name="category" class="form-control">
<option th:each="category:${categoryList}" th:value="${category.getId()}" th:text="${category.getCategory()}"></option>
</select>
</div>
</div>
<div class="col-auto ml-auto">
<button type="submit" class="btn btn-primary mb-2">查询</button>
</div>
</div>
</form>
</div>
<div class="container">
<table class="table">
<thead class="thead-light">
<tr>
<th scope="col">#</th>
<th scope="col">资源名</th>
<th scope="col">资源内容</th>
<th scope="col">资源类型</th>
<th scope="col">去下载</th>
</tr>
</thead>
<tbody>
<tr th:each="source:${sourceList}">
<td th:text="${source.getId()}"></td>
<td th:text="${source.getSourceName()}"></td>
<td th:text="${source.getSourceContent()}"></td>
<td th:text="${source.getCategoryName()}"></td>
<td th:name="${source.getId()}">
<a style="color: white" th:href="@{'/source/view/'+${source.getId()}}" class="btn btn-sm btn-primary">详情</a>
</td>
</tr>
</tbody>
</table>
</div>
</main>
<div th:replace="~{common/footer::footer}"></div>
<a class="to-top">返回顶部</a>
<script th:src="@{/js/jquery-3.5.1.min.js}"></script>
<script th:src="@{/bootstrap/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/js/toTop.js}"></script>
<script th:src="@{/js/jquery-ui.min.js}"></script>
<script th:src="@{/live/js/addlive2d.js}"></script>
</body>
</html>

View File

@@ -0,0 +1,125 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>资源下载-Quinn</title>
<link rel="stylesheet" th:href="@{/bootstrap/css/bootstrap.min.css}">
<style>
.nav-underline .nav-link {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: .875rem;
color: #6c757d;
}
</style>
</head>
<body style="background: #f2f2f2;">
<!-- 导航栏 -->
<div th:replace="~{common/header::header(activeUrl='source')}"></div>
<main role="main" class="container mt-3 p-3 bg-white rounded">
<div class="row">
<div class="col-md-12 source-main">
<div class="source-post">
<h2 class="source-post-title" th:text="${source.getSourceName()}"></h2>
<p class="source-post-meta">
上传时间:
<span th:text="${#dates.format(source.getGmtUpdate(),'yyyy-MM-dd')}"></span>
类别-
<span th:text="${source.getCategoryName()}"></span>
<a th:href="@{'/source/download/' + ${source.getId()}}" class="btn btn-outline-success col-md-2 float-right">下载</a>
</p>
</div>
<hr style="margin-top: 18px">
<!--文章主体内容-->
<div id="doc-content">
<textarea th:text="${source.getSourceContent()}" style="display:none;" placeholder="markdown"></textarea>
</div>
</div>
<div class="col-md-12 source-main" style="margin-top: 20px">
<hr>
</div>
<div class="col-md-12 source-main" style="margin-top: 20px">
<form th:action="@{'/source/comment/'+${source.getId()}}" method="post">
<input type="hidden" name="userId" th:value="${session.loginUser.getUid()}">
<input type="hidden" name="userName" th:value="${session.loginUser.getUsername()}">
<input type="hidden" name="userAvatar" th:value="${session.loginUser.getAvatar()}">
<input type="hidden" name="topicId" th:value="${source.getId()}">
<div class="form-group">
<textarea name="content" class="form-control" rows="3" required></textarea>
</div>
<button type="submit" class="btn btn-primary float-right">提交评论</button>
</form>
</div>
<div th:if="${commentList.size()!=0}" class="col-md-12 source-main" style="margin-top: 20px">
<div class="my-3 p-3 bg-white rounded shadow-sm">
<h6 class="border-bottom border-gray pb-2 mb-0">评论列表</h6>
<div th:each="comment:${commentList}" class="media text-muted pt-3">
<img th:src="${comment.getUserAvatar()}" style="border-radius: 5px;margin-right: 5px " width="32" height="32">
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
<strong class="d-block text-gray-dark" th:text="${comment.getUserName()}"></strong>
<span th:text="${comment.getContent()}"></span>
<span th:text="${#dates.format(comment.getGmtCreate(),'yyyy-MM-dd')}" class="badge badge-light float-right"></span>
</p>
</div>
</div>
</div>
<div th:if="${commentList.size()==0}" class="col-md-12 source-main" style="margin-top: 20px">
<div class="my-3 p-3 bg-white rounded shadow-sm">
<h6 class="pb-2 mb-0 text-center">emmm... 这里暂时还没有评论....</h6>
</div>
</div>
</div>
</main>
<div th:replace="~{common/footer::footer}"></div>
<a class="to-top">返回顶部</a>
<script th:src="@{/js/jquery-3.5.1.min.js}"></script>
<script th:src="@{/bootstrap/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/js/toTop.js}"></script>
<script th:src="@{/js/jquery-ui.min.js}"></script>
<script th:src="@{/live/js/addlive2d.js}"></script>
<link rel="stylesheet" th:href="@{/editormd/css/editormd.preview.css}" />
<script th:src="@{/editormd/lib/marked.min.js}"></script>
<script th:src="@{/editormd/lib/prettify.min.js}"></script>
<script th:src="@{/editormd/lib/raphael.min.js}"></script>
<script th:src="@{/editormd/lib/underscore.min.js}"></script>
<script th:src="@{/editormd/lib/sequence-diagram.min.js}"></script>
<script th:src="@{/editormd/lib/flowchart.min.js}"></script>
<script th:src="@{/editormd/lib/jquery.flowchart.min.js}"></script>
<script th:src="@{/editormd/editormd.js}"></script>
<script type="text/javascript">
var testEditor;
$(function () {
testEditor = editormd.markdownToHTML("doc-content", {//注意这里是上面DIV的id
htmlDecode: "style,script,iframe",
emoji: true,
taskList: true,
tocm: true,
tex: true, // 默认不解析
flowChart: true, // 默认不解析
sequenceDiagram: true, // 默认不解析
codeFold: true
});});
</script>
</body>
</html>