Compare commits

...

16 Commits

Author SHA1 Message Date
ef290bed9c fix: 书架列表时间格式化 2023-10-21 21:02:00 +08:00
5543e5aa57 perf: 设置网站 ico 图标 2023-10-15 20:30:11 +08:00
0332802fe5 feat(crawl): 账号退出 2023-10-15 19:13:07 +08:00
a55f456b3d perf: 更新爬虫管理系统主题颜色 2023-10-15 17:54:44 +08:00
f6d66e69fb Update README.md 2023-10-14 18:19:00 +08:00
96960789e1 fix(alipay): 修改默认支付宝支付成功跳转地址 2023-10-14 17:50:14 +08:00
1998dcd460 fix(alipay): 修复支付宝支付页面报错
沙箱环境自动升级到新版后,没有在代码中更换新版本的应用/网关/账号信息,也没有从左边栏沙箱工具中下载最新版本的沙箱支付宝APP安装使用。
2023-10-14 17:42:42 +08:00
a33d8f68a2 删除垃圾文件 2023-10-14 13:42:37 +08:00
30959da038 删除垃圾文件 2023-10-14 13:39:11 +08:00
5406783344 删除垃圾文件 2023-10-14 12:54:33 +08:00
d84345918b Update README.md 2023-10-14 10:32:46 +08:00
a5394cb426 Update README.md 2023-10-14 10:20:16 +08:00
2275b85752 chore: 模版更新 2023-10-14 10:16:41 +08:00
2062123edd perf(mobile): 去除手机网站底部空白间隙 2023-10-14 10:06:16 +08:00
255b3f8c4b feat(templates): 新增绿色主题模版,并设置为默认模版
和文档站点 docs.xxyopen.com 风格保持一致
2023-10-13 21:21:21 +08:00
00179359bd chore: 更新 Dockerfile 文件 2023-10-12 16:33:57 +08:00
661 changed files with 57182 additions and 18752 deletions

View File

@ -57,7 +57,15 @@ novel-plus -- 父工程
| Thymeleaf | 模板引擎
| Layui | 前端 UI 框架
## 项目演示
## 项目截图
### 绿色主题模版
[![点击查看大图](https://youdoc.gitee.io/resource/images/os/novel-plus/green.png)](https://youdoc.gitee.io/resource/images/os/novel-plus/green.png)
[![点击查看大图](https://youdoc.gitee.io/resource/images/os/novel-plus/green3.png)](https://youdoc.gitee.io/resource/images/os/novel-plus/green3.png)
[![点击查看大图](https://youdoc.gitee.io/resource/images/os/novel-plus/green2.png)](https://youdoc.gitee.io/resource/images/os/novel-plus/green2.png)
## 演示视频
https://www.bilibili.com/video/BV1Zo4y187Mi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 929 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 764 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -1,116 +0,0 @@
<h1 class="curproject-name"> 小说精品屋-plus </h1>
小说精品屋-plus接口
# 作家模块
## 小说章节分页列表查询接口
<a id=小说章节分页列表查询接口> </a>
### 基本信息
**Path** /book/queryIndexList
**Method** GET
**接口描述:**
<p>作家后台章节管理页面需要请求该接口获取小说章节分页列表信息</p>
### 请求参数
**Query**
| 参数名称 | 是否必须 | 示例 | 备注 |
| ------------ | ------------ | ------------ | ------------ |
| bookId | 是 | 1334337530296893441 | 小说ID |
| curr | 否 | 1 | 查询页码默认1 |
| limit | 否 | 5 | 分页大小默认5 |
### 返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应状态吗200表示成功</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应信息</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> data</span></td><td key=1><span>object</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应数据</span></td><td key=5></td></tr><tr key=0-2-0><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> total</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">总数量</span></td><td key=5></td></tr><tr key=0-2-1><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> list</span></td><td key=1><span>object []</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">章节数据集合</span></td><td key=5><p key=3><span style="font-weight: '700'">item 类型: </span><span>object</span></p></td></tr><tr key=0-2-1-0><td key=0><span style="padding-left: 40px"><span style="color: #8c8a8a">├─</span> id</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">章节ID</span></td><td key=5></td></tr><tr key=0-2-1-1><td key=0><span style="padding-left: 40px"><span style="color: #8c8a8a">├─</span> bookId</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">小说ID</span></td><td key=5></td></tr><tr key=0-2-1-2><td key=0><span style="padding-left: 40px"><span style="color: #8c8a8a">├─</span> indexName</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">章节名</span></td><td key=5></td></tr><tr key=0-2-1-3><td key=0><span style="padding-left: 40px"><span style="color: #8c8a8a">├─</span> isVip</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">是否收费1:收费0:免费</span></td><td key=5></td></tr><tr key=0-2-1-4><td key=0><span style="padding-left: 40px"><span style="color: #8c8a8a">├─</span> updateTime</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">更新时间</span></td><td key=5></td></tr><tr key=0-2-2><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> pageNum</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">页码</span></td><td key=5></td></tr><tr key=0-2-3><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> pageSize</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">分页大小</span></td><td key=5></td></tr><tr key=0-2-4><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> size</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">当前页数量</span></td><td key=5></td></tr>
</tbody>
</table>
## 小说章节删除接口
<a id=小说章节删除接口> </a>
### 基本信息
**Path** /author/deleteIndex/{indexId}
**Method** DELETE
**接口描述:**
<p>作家后台章节管理页面点击删除按钮请求该接口删除小说章节内容</p>
### 请求参数
**Headers**
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| Content-Type | application/x-www-form-urlencoded | 是 | | |
| Authorization | | 是 | eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE2MDgzNDg0NzksInN1YiI6IntcImlkXCI6MTI1NTA2MDMyODMyMjAyNzUyMCxcInVzZXJuYW1lXCI6XCIxMzU2MDQyMTMyNFwiLFwibmlja05hbWVcIjpcIjEzNTYwNDIxMzI0XCJ9IiwiY3JlYXRlZCI6MTYwNzc0MzY3OTkxM30.0qhwis_zPb6t8wGNejMhDZ2iHCL9Tgh2UHd1gcQBCp8t6RW3ggSwtfo4l_RgMT_v8jOkLW91GzTVWlNnTE6LCA | 认证JWT请求登录接口成功后返回 |
**路径参数**
| 参数名称 | 示例 | 备注 |
| ------------ | ------------ | ------------ |
| indexId | 1337603246936645632 | 章节ID |
### 返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应状态吗200表示成功</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应信息</span></td><td key=5></td></tr>
</tbody>
</table>
## 小说章节发布接口
<a id=小说章节发布接口> </a>
### 基本信息
**Path** /author/addBookContent
**Method** POST
**接口描述:**
<p>作家后台章节发布页面点击提交按钮请求该接口新增小说章节内容</p>
### 请求参数
**Headers**
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| Content-Type | application/x-www-form-urlencoded | 是 | | |
| Authorization | | 是 | eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE2MDgzNDg0NzksInN1YiI6IntcImlkXCI6MTI1NTA2MDMyODMyMjAyNzUyMCxcInVzZXJuYW1lXCI6XCIxMzU2MDQyMTMyNFwiLFwibmlja05hbWVcIjpcIjEzNTYwNDIxMzI0XCJ9IiwiY3JlYXRlZCI6MTYwNzc0MzY3OTkxM30.0qhwis_zPb6t8wGNejMhDZ2iHCL9Tgh2UHd1gcQBCp8t6RW3ggSwtfo4l_RgMT_v8jOkLW91GzTVWlNnTE6LCA | 认证JWT请求登录接口成功后返回 |
**Body**
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| bookId | text | 是 | 1334337530296893441 | 小说ID |
| indexName | text | 是 | 第六章未婚妻(下) | 章节名 |
| content | text | 是 | 开始之时,李七夜还是生疏无比,那怕他对于刀术的所有奥义了然于胸,但是,他出刀之时依然会颤抖,无法达到妙及巅毫的要求。 | 章节内容 |
| isVip | text | 是 | 1 | 是否收费1:收费0:免费 |
### 返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应状态吗200表示成功</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">响应信息</span></td><td key=5></td></tr>
</tbody>
</table>

View File

@ -3005,4 +3005,10 @@ VALUES (1, 410);
INSERT INTO `sys_menu` (`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
VALUES (305, '301', '修改', null, 'novel:websiteInfo:edit', '2', null, '6');
INSERT INTO sys_role_menu (role_id, menu_id)
VALUES (1, 305);
VALUES (1, 305);
update website_info
set logo = 'https://youdoc.gitee.io/resource/images/logo%20(1).png',
logo_dark='https://youdoc.gitee.io/resource/images/logo%20(1).png'
where id = 1;

View File

@ -1,6 +1,9 @@
FROM java:8
ADD novel-admin-1.0.0.jar /root
FROM openjdk:8
ADD novel-admin-4.2.0.jar /root
ENV dburl=""
ENV username=""
ENV password=""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -jar /root/novel-admin-1.0.0.jar"]
ENV redishost = ""
ENV redisport = ""
ENV redispwd = ""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -Dspring.redis.host=${redishost} -Dspring.redis.port=${redisport} -Dspring.redis.password=${redispwd} -jar /root/novel-admin-4.2.0.jar"]

View File

@ -68,6 +68,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/js/**", "anon");
filterChainDefinitionMap.put("/fonts/**", "anon");
filterChainDefinitionMap.put("/img/**", "anon");
filterChainDefinitionMap.put("/favicon.ico", "anon");
filterChainDefinitionMap.put("/docs/**", "anon");
filterChainDefinitionMap.put("/layuimini/**", "anon");
filterChainDefinitionMap.put("/upload/**", "anon");

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -1,6 +1,9 @@
FROM java:8
ADD novel-crawl-1.1.0.jar /root
FROM openjdk:8
ADD novel-crawl-4.2.0.jar /root
ENV dburl=""
ENV username=""
ENV password=""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -jar /root/novel-crawl-1.1.0.jar"]
ENV redishost = ""
ENV redisport = ""
ENV redispwd = ""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -Dspring.redis.host=${redishost} -Dspring.redis.port=${redisport} -Dspring.redis.password=${redispwd} -jar /root/novel-crawl-4.2.0.jar"]

View File

@ -53,8 +53,12 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/css/**").permitAll()
.antMatchers("/favicon.ico").permitAll()
.antMatchers("/**").hasRole("ADMIN")
.and().formLogin().loginPage("/login.html").loginProcessingUrl("/login").permitAll()
.and().logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and().httpBasic();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,100 +1,511 @@
@charset "utf-8";
.updateTable .style a { color:#999 }
.updateTable .author a { color:#999; cursor:text }
.bind, .updateTable .style a:hover { color:#f65167 }
.userBox { /*width: 998px; border: 1px solid #eaeaea;*/ margin:0 auto 50px; background: #fff; border-radius: 6px }
.channelViewhistory .userBox { margin: 0 auto }
.user_l { width:350px; float:left; padding:50px 50px }
.user_l h3 { font-size:23px; font-weight:normal; line-height:1; text-align: center }
.user_l #LabErr { color:#ff4040; display:block; height:40px; line-height:40px; text-align: center; font-size: 14px }
.user_l .log_list { width:350px }
.user_l .s_input { margin-bottom:25px; font-size:14px }
.s_input { width:348px; height:30px; line-height:38px\9; vertical-align:middle; border:1px solid #ddd; border-radius:2px }
.icon_name, .icon_key, .icon_code { width:312px; padding-left:36px}
.icon_key { background-position: 13px -51px }
.icon_code { background-position: 13px -117px; width:200px; float:left }
.code_pic { height:38px; float:right }
.btn_phone { height:40px; width:100px; float:right; cursor:pointer; padding:0; text-align:center; border-radius:2px; background:#dfdfdf }
.log_code { *padding-bottom:25px }
.user_l .btn_red { width:100%; font-size:19px; padding:12px }
.autologin { color:#999; line-height:1; margin-bottom:18px }
.autologin em { vertical-align:2px; margin-left:4px }
.user_r { width:259px; margin:80px 0; padding:20px 70px; border-left:1px dotted #e3e3e3; float:right; text-align:center }
.user_r .tit { font-size:16px; line-height:1; padding: 6px 0 25px }
.user_r .btn_ora { padding:10px 34px }
.fast_login { padding:60px 0 0 }
.fast_list { text-align:center; padding:0.5rem }
.fast_list li { display:inline-block; *display:inline; zoom:1 }
.fast_list li .img { width:48px; height:48px; margin:20px 0 5px }
.fast_list li a:hover { opacity:0.8; filter: alpha(opacity=80); -moz-opacity: 0.8 }
.fast_list li span { display:block }
.fast_list .login_qq { margin:0 42px }
.fast_list .login_wb a { color:#f55c5b }
.fast_list .login_qq a { color:#51b7ff }
.fast_list .login_wx a { color:#66d65e }
.fast_tit { position:relative; overflow:hidden }
.fast_tit .lines { position:absolute; top:50%; left:0; width:100%; height:1px; line-height:1; background:#eaeaea }
.fast_tit .title { background:#fff; font-size:16px; padding:3px 14px; position:relative; display:inline-block; z-index:999 }
/*userinfo*/
.my_l { width:198px; float:left; font-size: 13px; padding-top: 20px; }
.my_l li a { display:block; height:42px; line-height:42px; padding-left:62px; border-left:4px solid #fff; margin-bottom:5px; color: #666 }
.my_l li .on { background-color:#fafafa; border-left:2px solid #f80; color:#000; border-radius: 0 2px 2px 0 }
.my_l .link_1 { background-position:32px -188px }
.my_l .link_2 { background-position:32px -230px }
.my_l .link_3 { background-position:32px -272px }
.my_l .link_4 { background-position:32px -314px }
.my_l .link_5 { background-position:32px -356px }
.my_l .link_6 { background-position:32px -397px }
.my_l .link_7 { background-position:32px -440px }
.my_l .link_8 { background-position:32px -481px }
.my_r { width:739px; padding:0 30px 30px; float:right; border-left:1px solid #efefef; min-height:470px }
.my_info { padding:30px 0 5px }
.user_big_head { /*width:110px; height:110px; padding:4px; border:1px solid #eaeaea;*/ margin-right:30px; float:left; width: 80px;
height: 80px;
border-radius: 50%; }
.my_r .my_name { font-size:18px; line-height:1; padding:5px 0 12px 0 }
.my_r .s_input { width:318px; padding:0 10px }
.my_list li { line-height:28px }
.my_list li i, .my_list li em.red { margin-right:6px }
.my_list .binded { color:#999; margin-left:6px }
.my_list .btn_link { margin-left:12px }
.mytab_list li { line-height:30px; padding:10px 0; font-size:14px }
.mytab_list li .tit { width:70px; color: #aaa; text-align:right; display:inline-block; margin-right:18px }
.mytab_list .user_img { width:48px; height:48px; vertical-align:middle; border-radius:50% }
.my_bookshelf .title { padding:20px 0 15px; line-height:30px }
.my_bookshelf h4 { font-size:14px; color:#666 }
.my_bookshelf h2 { font-size:18px; font-weight:normal }
.updateTable { width: 739px; color: #999 }
.updateTable table { width: 100%; margin-bottom:14px }
.updateTable th, .updateTable td { height: 40px; line-height: 40px; vertical-align: middle; padding-left: 6px; font-weight:normal; text-align:left }
.updateTable th { background:#f9f9f9; color:#333; border-top:1px solid #eee }
.updateTable td { height:40px; line-height:40px }
.updateTable .style { width:80px; padding-left:10px }
.updateTable .name { width: 178px; padding-right: 10px }
.updateTable .name a, .updateTable .chapter a { max-width: 168px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.updateTable .chapter { padding-right: 5px }
.updateTable .chapter a { max-width:220px; float: left }
.updateTable .author { width: 72px; text-align: left }
.updateTable .goread { width: 80px; text-align:center }
.updateTable .time { width: 86px }
.updateTable .word { width: 64px; padding-right:10px; text-align: right }
.updateTable .rank { width: 30px; padding-right:10px; text-align: center }
.updateTable .name a, .updateTable .chapter a, .updateTable .author a { height: 40px; line-height: 40px; display: inline-block; overflow: hidden }
.updateTable tr:nth-child(2n) td { background:#fafafa }
.dataTable { width: 739px }
.dataTable table { width: 100%; margin-bottom:14px; border-collapse:collapse }
.dataTable th, .dataTable td { height: 40px; line-height: 40px; vertical-align: middle; padding:0 10px; font-weight:normal; text-align:center; border:1px solid #eaeaea }
.dataTable th { background:#f8f8f8 }
.nodate { border-top: 1px solid #eaeaea; padding:60px 0 }
.viewhistoryBox { /*padding: 0 30px 30px; */ padding: 0 20px 10px }
.viewhistoryBox .updateTable { width:100% }
/*.btn_gray, .btn_red, .btn_ora { font-size:14px; padding:8px 28px }*/
.book_tit { height: 48px; line-height:48px; margin: 0 14px; border-bottom: 1px solid #eaeaea; overflow:hidden }
.book_tit .fl { font-size:14px; color:#999 }
.book_tit .fl h3 { font-size:18px; color:#333; font-weight:normal; margin-right:5px; display:inline }
.book_tit .fr { font-size:14px }
.updateTable .style a {
color: #999
}
.updateTable .author a {
color: #999;
cursor: text
}
.bind, .updateTable .style a:hover {
color: #f65167
}
.userBox { /*width: 998px; border: 1px solid #eaeaea;*/
margin: 0 auto 50px;
background: #fff;
border-radius: 6px
}
.channelViewhistory .userBox {
margin: 0 auto
}
.user_l {
width: 350px;
float: left;
padding: 50px 50px
}
.user_l h3 {
font-size: 23px;
font-weight: normal;
line-height: 1;
text-align: center
}
.user_l #LabErr {
color: #ff4040;
display: block;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 14px
}
.user_l .log_list {
width: 350px
}
.user_l .s_input {
margin-bottom: 25px;
font-size: 14px
}
.s_input {
width: 348px;
height: 30px;
line-height: 38px \9;
vertical-align: middle;
border: 1px solid #ddd;
border-radius: 2px
}
.icon_name, .icon_key, .icon_code {
width: 312px;
padding-left: 36px
}
.icon_key {
background-position: 13px -51px
}
.icon_code {
background-position: 13px -117px;
width: 200px;
float: left
}
.code_pic {
height: 38px;
float: right
}
.btn_phone {
height: 40px;
width: 100px;
float: right;
cursor: pointer;
padding: 0;
text-align: center;
border-radius: 2px;
background: #dfdfdf
}
.log_code {
*padding-bottom: 25px
}
.user_l .btn_red {
width: 100%;
font-size: 19px;
padding: 12px
}
.autologin {
color: #999;
line-height: 1;
margin-bottom: 18px
}
.autologin em {
vertical-align: 2px;
margin-left: 4px
}
.user_r {
width: 259px;
margin: 80px 0;
padding: 20px 70px;
border-left: 1px dotted #e3e3e3;
float: right;
text-align: center
}
.user_r .tit {
font-size: 16px;
line-height: 1;
padding: 6px 0 25px
}
.user_r .btn_ora {
padding: 10px 34px
}
.fast_login {
padding: 60px 0 0
}
.fast_list {
text-align: center;
padding: 0.5rem
}
.fast_list li {
display: inline-block;
*display: inline;
zoom: 1
}
.fast_list li .img {
width: 48px;
height: 48px;
margin: 20px 0 5px
}
.fast_list li a:hover {
opacity: 0.8;
filter: alpha(opacity=80);
-moz-opacity: 0.8
}
.fast_list li span {
display: block
}
.fast_list .login_qq {
margin: 0 42px
}
.fast_list .login_wb a {
color: #f55c5b
}
.fast_list .login_qq a {
color: #51b7ff
}
.fast_list .login_wx a {
color: #66d65e
}
.fast_tit {
position: relative;
overflow: hidden
}
.fast_tit .lines {
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
line-height: 1;
background: #eaeaea
}
.fast_tit .title {
background: #fff;
font-size: 16px;
padding: 3px 14px;
position: relative;
display: inline-block;
z-index: 999
}
/*userinfo*/
.my_l {
width: 198px;
float: left;
font-size: 13px;
padding-top: 20px;
}
.my_l li a {
display: block;
height: 42px;
line-height: 42px;
padding-left: 62px;
border-left: 4px solid #fff;
margin-bottom: 5px;
color: #666
}
.my_l li .on {
background-color: #fafafa;
border-left: 2px solid #3eaf7c;
color: #000;
border-radius: 0 2px 2px 0
}
.my_l .link_1 {
background-position: 32px -188px
}
.my_l .link_2 {
background-position: 32px -230px
}
.my_l .link_3 {
background-position: 32px -272px
}
.my_l .link_4 {
background-position: 32px -314px
}
.my_l .link_5 {
background-position: 32px -356px
}
.my_l .link_6 {
background-position: 32px -397px
}
.my_l .link_7 {
background-position: 32px -440px
}
.my_l .link_8 {
background-position: 32px -481px
}
.my_r {
width: 739px;
padding: 0 30px 30px;
float: right;
border-left: 1px solid #efefef;
min-height: 470px
}
.my_info {
padding: 30px 0 5px
}
.user_big_head { /*width:110px; height:110px; padding:4px; border:1px solid #eaeaea;*/
margin-right: 30px;
float: left;
width: 80px;
height: 80px;
border-radius: 50%;
}
.my_r .my_name {
font-size: 18px;
line-height: 1;
padding: 5px 0 12px 0
}
.my_r .s_input {
width: 318px;
padding: 0 10px
}
.my_list li {
line-height: 28px
}
.my_list li i, .my_list li em.red {
margin-right: 6px
}
.my_list .binded {
color: #999;
margin-left: 6px
}
.my_list .btn_link {
margin-left: 12px
}
.mytab_list li {
line-height: 30px;
padding: 10px 0;
font-size: 14px
}
.mytab_list li .tit {
width: 70px;
color: #aaa;
text-align: right;
display: inline-block;
margin-right: 18px
}
.mytab_list .user_img {
width: 48px;
height: 48px;
vertical-align: middle;
border-radius: 50%
}
.my_bookshelf .title {
padding: 20px 0 15px;
line-height: 30px
}
.my_bookshelf h4 {
font-size: 14px;
color: #666
}
.my_bookshelf h2 {
font-size: 18px;
font-weight: normal
}
.updateTable {
width: 739px;
color: #999
}
.updateTable table {
width: 100%;
margin-bottom: 14px
}
.updateTable th, .updateTable td {
height: 40px;
line-height: 40px;
vertical-align: middle;
padding-left: 6px;
font-weight: normal;
text-align: left
}
.updateTable th {
background: #f9f9f9;
color: #333;
border-top: 1px solid #eee
}
.updateTable td {
height: 40px;
line-height: 40px
}
.updateTable .style {
width: 80px;
padding-left: 10px
}
.updateTable .name {
width: 178px;
padding-right: 10px
}
.updateTable .name a, .updateTable .chapter a {
max-width: 168px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.updateTable .chapter {
padding-right: 5px
}
.updateTable .chapter a {
max-width: 220px;
float: left
}
.updateTable .author {
width: 72px;
text-align: left
}
.updateTable .goread {
width: 80px;
text-align: center
}
.updateTable .time {
width: 86px
}
.updateTable .word {
width: 64px;
padding-right: 10px;
text-align: right
}
.updateTable .rank {
width: 30px;
padding-right: 10px;
text-align: center
}
.updateTable .name a, .updateTable .chapter a, .updateTable .author a {
height: 40px;
line-height: 40px;
display: inline-block;
overflow: hidden
}
.updateTable tr:nth-child(2n) td {
background: #fafafa
}
.dataTable {
width: 739px
}
.dataTable table {
width: 100%;
margin-bottom: 14px;
border-collapse: collapse
}
.dataTable th, .dataTable td {
height: 40px;
line-height: 40px;
vertical-align: middle;
padding: 0 10px;
font-weight: normal;
text-align: center;
border: 1px solid #eaeaea
}
.dataTable th {
background: #f8f8f8
}
.nodate {
border-top: 1px solid #eaeaea;
padding: 60px 0
}
.viewhistoryBox { /*padding: 0 30px 30px; */
padding: 0 20px 10px
}
.viewhistoryBox .updateTable {
width: 100%
}
/*.btn_gray, .btn_red, .btn_ora { font-size:14px; padding:8px 28px }*/
.book_tit {
height: 48px;
line-height: 48px;
margin: 0 14px;
border-bottom: 1px solid #eaeaea;
overflow: hidden
}
.book_tit .fl {
font-size: 14px;
color: #999
}
.book_tit .fl h3 {
font-size: 18px;
color: #333;
font-weight: normal;
margin-right: 5px;
display: inline
}
.book_tit .fr {
font-size: 14px
}
.commentBar, .feedback_list {
border-top: 1px solid #eee;
margin-bottom: 15px
}
.commentBar, .feedback_list { border-top:1px solid #eee; margin-bottom:15px }
/*.comment_list { padding: 16px 0; border-bottom: 1px solid #eee }
.comment_list .user_head { width:54px; height:54px; border-radius:50%; float: left; margin-right: 14px }
.comment_list .li_1 { overflow: hidden }
@ -105,33 +516,128 @@
.comment_list .num { color: #ed4259; margin: 0 3px }
.comment_list .li_4 { line-height:34px; padding-top:8px; margin-top:15px; border-top:1px solid #eaeaea }
.comment_list .li_4 .more { background:#f7f7f7; border-radius:2px; color:#ed4259; text-align:center }*/
.no_contet { padding:190px 0 40px; text-align:center; color:#999; border-top:1px solid #eee }
.no_comment { background:url(../images/no_comment.png) no-repeat center 80px }
.no_contet {
padding: 190px 0 40px;
text-align: center;
color: #999;
border-top: 1px solid #eee
}
.no_comment {
background: url(../images/no_comment.png) no-repeat center 80px
}
.comment_list {
padding: 20px 0;
border-bottom: 1px solid #eee
}
.comment_list:last-child {
border: none
}
.comment_list .user_heads { /*width: 54px; height: 54px; float: left;*/
position: relative;
margin-right: 20px
}
.comment_list .user_head {
width: 50px;
height: 50px;
border-radius: 50%;
background: #f6f6f6
}
.comment_list .user_heads span {
display: block;
margin: 0;
position: absolute;
left: 12px;
bottom: 0
}
.comment_list ul { /*width: 640px;*/
width: 660px;
}
.comment_list .li_0 {
font-family: "宋体"
}
.comment_list .li_0 strong {
font-size: 14px;
color: #f00
}
.comment_list .li_1 {
overflow: hidden
}
.comment_list .user_name {
color: #ed4259
}
.comment_list .li_2 {
padding: 6px 0
}
.comment_list .li_3 {
color: #999
}
.comment_list .reply {
padding-left: 12px
}
.comment_list .num {
color: #ed4259;
margin: 0 3px
}
.comment_list .li_4 {
line-height: 34px;
padding-top: 8px;
margin-top: 15px;
border-top: 1px solid #eaeaea
}
.pl_bar li {
display: block
}
.pl_bar .name {
color: #666;
padding-top: 2px;
font-size: 14px
}
.pl_bar .dec {
font-size: 14px;
line-height: 1.8;
padding: 12px 0
}
.pl_bar .other {
line-height: 24px;
color: #999;
font-size: 13px
}
.pl_bar .other a {
display: inline-block;
color: #999
}
.pl_bar .reply {
padding-left: 22px;
background: url(../images/icon_reply.png) no-repeat 0 2px
}
.comment_list { padding: 20px 0; border-bottom: 1px solid #eee }
.comment_list:last-child { border: none }
.comment_list .user_heads { /*width: 54px; height: 54px; float: left;*/ position:relative; margin-right: 20px }
.comment_list .user_head { width: 50px; height: 50px; border-radius: 50%; background: #f6f6f6 }
.comment_list .user_heads span { display: block; margin: 0; position: absolute; left: 12px; bottom: 0 }
.comment_list ul { /*width: 640px;*/ width: 660px; }
.comment_list .li_0 { font-family: "宋体" }
.comment_list .li_0 strong { font-size: 14px; color: #f00 }
.comment_list .li_1 { overflow: hidden }
.comment_list .user_name { color: #ed4259 }
.comment_list .li_2 { padding: 6px 0 }
.comment_list .li_3 { color: #999 }
.comment_list .reply { padding-left: 12px }
.comment_list .num { color: #ed4259; margin: 0 3px }
.comment_list .li_4 { line-height: 34px; padding-top: 8px; margin-top: 15px; border-top: 1px solid #eaeaea }
.pl_bar li { display: block }
.pl_bar .name { color: #666; padding-top: 2px; font-size: 14px }
.pl_bar .dec { font-size: 14px; line-height: 1.8; padding: 12px 0 }
.pl_bar .other { line-height: 24px; color: #999; font-size: 13px }
.pl_bar .other a { display: inline-block; color: #999 }
.pl_bar .reply { padding-left: 22px; background: url(../images/icon_reply.png) no-repeat 0 2px }
/*.no_comment { padding: 70px 14px 115px; color: #CCCCCC; text-align: center; font-size: 14px; }*/
.reply_bar {
background: #f9f9f9;
border: 1px solid #eee; border-radius: 6px;
border: 1px solid #eee;
border-radius: 6px;
padding: 10px;
line-height: 1.8;}
line-height: 1.8;
}

View File

@ -457,8 +457,8 @@ html #layuicss-layer {
}
.layui-layer-btn .layui-layer-btn0 {
border-color: #f70;
background-color: #f70;
border-color: #3eaf7c;
background-color: #3eaf7c;
color: #fff
}

View File

@ -12,15 +12,7 @@
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -30,7 +22,7 @@
<ul class="log_list">
<li><a class="link_1" href="/">爬虫源管理</a></li>
<li><a class="link_1 on" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!--<li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>
@ -47,7 +39,7 @@
<h3>采集信息填写示例均为笔趣阁http://www.mcmssc.com</h3>
<ul class="log_list">
<li><span id="LabErr"></span></li>
<input type="hidden" id="sourceName" class="s_input icon_name" >
<input type="hidden" id="sourceName" class="s_input icon_name">
<b>采集源:</b>
<li><select id="sourceId" class="s_input icon_key">
</select></li>
@ -99,16 +91,16 @@
$.ajax({
type: "get",
url: "/crawl/listCrawlByPage",
data: {'curr':1,'limit':100},
data: {'curr': 1, 'limit': 100},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var crawlSourceList = data.data.list;
if (crawlSourceList.length > 0) {
var crawlSourceListHtml = "";
for(var i=0;i<crawlSourceList.length;i++){
for (var i = 0; i < crawlSourceList.length; i++) {
var crawlSource = crawlSourceList[i];
crawlSourceListHtml+=("<option value=\""+crawlSource.id+"\">"+crawlSource.sourceName+"</option>");
crawlSourceListHtml += ("<option value=\"" + crawlSource.id + "\">" + crawlSource.sourceName + "</option>");
}
$("#sourceId").html(crawlSourceListHtml);
@ -120,7 +112,7 @@
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -143,21 +135,21 @@
var sourceBookId = $("#sourceBookId").val();
if (!sourceBookId){
if (!sourceBookId) {
layer.alert("采集的源站小说ID不能为空");
return;
}
var bookName = $("#bookName").val();
if (!bookName){
if (!bookName) {
layer.alert("采集的小说名不能为空");
return;
}
var authorName = $("#authorName").val();
if (!authorName){
if (!authorName) {
layer.alert("采集的小说作者名不能为空");
return;
}
@ -165,7 +157,14 @@
$.ajax({
type: "POST",
url: "/crawl/addCrawlSingleTask",
data: {'sourceId': sourceId, 'sourceName': sourceName,'catId':catId,'sourceBookId' : sourceBookId,'bookName':bookName,'authorName':authorName},
data: {
'sourceId': sourceId,
'sourceName': sourceName,
'catId': catId,
'sourceBookId': sourceBookId,
'bookName': bookName,
'authorName': authorName
},
dataType: "json",
success: function (data) {
if (data.code == 200) {

View File

@ -12,15 +12,7 @@
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -30,7 +22,7 @@
<ul class="log_list">
<li><a class="link_1" href="/">爬虫源管理</a></li>
<li><a class="link_1 on" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!-- <li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>
@ -151,7 +143,7 @@
" " + crawlSource.excCount + "\n" +
" </td>\n" +
" <td class=\"goread\">\n" +
" " + (crawlSource.taskStatus == 0 ? '采集失败' : (crawlSource.taskStatus == 1 ? '采集成功' : (crawlSource.excCount>0?'采集中':'排队中'))) + "\n" +
" " + (crawlSource.taskStatus == 0 ? '采集失败' : (crawlSource.taskStatus == 1 ? '采集成功' : (crawlSource.excCount > 0 ? '采集中' : '排队中'))) + "\n" +
" </td>\n" +
" <td class=\"name\" valsc=\"291|2037554|1\">"
+ crawlSource.createTime + "</td>\n" +
@ -190,7 +182,7 @@
}
} else {
} else {
layer.alert(data.msg);
}
@ -207,7 +199,7 @@
$.ajax({
type: "delete",
url: "/crawl/delCrawlSingleTask/"+id,
url: "/crawl/delCrawlSingleTask/" + id,
data: {},
dataType: "json",
success: function (data) {

View File

@ -12,15 +12,7 @@
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -30,7 +22,7 @@
<ul class="log_list">
<li><a class="link_1 on" href="/">爬虫源管理</a></li>
<li><a class="link_1" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!--<li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
@ -7,19 +7,12 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>爬虫管理系统-小说精品屋</title>
<link rel="stylesheet" href="/css/base.css?v=1"/>
<link rel="stylesheet" href="/css/user.css" />
<link rel="stylesheet" href="/css/user.css"/>
</head>
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf" style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -29,9 +22,9 @@
<ul class="log_list">
<li><a class="link_1 on" href="/">爬虫源管理</a></li>
<li><a class="link_1" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<!-- <li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!-- <li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>
</div>
@ -40,6 +33,7 @@
<div class="title cf">
<h2 class="fl">爬虫源列表</h2>
<div class="fr"><a href="/crawl/crawlSource_add.html" class="btn_red">增加爬虫源</a>
</div>
</div>
<div id="divData" class="updateTable">
@ -69,7 +63,6 @@
<tbody id="crawlSourceList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -120,38 +113,39 @@
<script language="javascript" type="text/javascript">
search(1, 10);
var pageCrawlSourceList=null;
var pageCrawlSourceList = null;
function search(curr, limit) {
$.ajax({
type: "get",
url: "/crawl/listCrawlByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var crawlSourceList = data.data.list;
pageCrawlSourceList=data.data.list;
pageCrawlSourceList = data.data.list;
if (crawlSourceList.length > 0) {
var crawlSourceListHtml = "";
for(var i=0;i<crawlSourceList.length;i++){
for (var i = 0; i < crawlSourceList.length; i++) {
var crawlSource = crawlSourceList[i];
crawlSourceListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
crawlSourceListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" ["+(i+1)+"]\n" +
" [" + (i + 1) + "]\n" +
" </td>\n" +
" <td class=\"chapter\">\n" +
" "+crawlSource.sourceName+"</td>\n" +
" " + crawlSource.sourceName + "</td>\n" +
" <td class=\"name\" valsc=\"291|2037554|1\">"
+crawlSource.createTime+"</td>\n" +
+ crawlSource.createTime + "</td>\n" +
" <td class=\"name\">\n" +
" "+crawlSource.updateTime+"\n" +
" " + crawlSource.updateTime + "\n" +
" </td>\n" +
" <td class=\"goread\" id='sourceStatus"+crawlSource.id+"'>"+(crawlSource.sourceStatus==0?'停止运行':'正在运行')+
" <td class=\"goread\" id='sourceStatus" + crawlSource.id + "'>" + (crawlSource.sourceStatus == 0 ? '停止运行' : '正在运行') +
" </td>\n" +
" <td class=\"goread\" id='opt"+crawlSource.id+"'><a href='javascript:openOrStopCrawl("+crawlSource.id+","+crawlSource.sourceStatus+")'>"+(crawlSource.sourceStatus==0?'开启':'关闭')+" </a>" +
"<a href='javascript:updateCrawlSource("+crawlSource.id+")'>修改 </a>" +
" <td class=\"goread\" id='opt" + crawlSource.id + "'><a href='javascript:openOrStopCrawl(" + crawlSource.id + "," + crawlSource.sourceStatus + ")'>" + (crawlSource.sourceStatus == 0 ? '开启' : '关闭') + " </a>" +
"<a href='javascript:updateCrawlSource(" + crawlSource.id + ")'>修改 </a>" +
"</td> </tr>");
}
$("#crawlSourceList").html(crawlSourceListHtml);
@ -190,7 +184,7 @@
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -201,31 +195,32 @@
})
}
function updateCrawlSource(crawlSourceId){
localStorage.setItem("crawlSourceId",crawlSourceId);
window.location.href="/crawl/crawlSource_update.html";
function updateCrawlSource(crawlSourceId) {
localStorage.setItem("crawlSourceId", crawlSourceId);
window.location.href = "/crawl/crawlSource_update.html";
}
function openOrStopCrawl(sourceId,status) {
function openOrStopCrawl(sourceId, status) {
$.ajax({
type: "POST",
url: "/crawl/openOrCloseCrawl",
data: {'sourceId':sourceId,'sourceStatus':status==0?1:0},
data: {'sourceId': sourceId, 'sourceStatus': status == 0 ? 1 : 0},
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(status == 0){
if (status == 0) {
//开启
$("#sourceStatus"+sourceId).html("正在运行");
$("#opt"+sourceId).html("<a href='javascript:openOrStopCrawl("+sourceId+","+1+")'>关闭</a>");
}else{
$("#sourceStatus" + sourceId).html("正在运行");
$("#opt" + sourceId).html("<a href='javascript:openOrStopCrawl(" + sourceId + "," + 1 + ")'>关闭</a>");
} else {
//关闭
$("#sourceStatus"+sourceId).html("停止运行");
$("#opt"+sourceId).html("<a href='javascript:openOrStopCrawl("+sourceId+","+0+")'>开启</a>");
$("#sourceStatus" + sourceId).html("停止运行");
$("#opt" + sourceId).html("<a href='javascript:openOrStopCrawl(" + sourceId + "," + 0 + ")'>开启</a>");
}
@ -233,7 +228,7 @@
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -244,9 +239,6 @@
})
}
</script>
</html>

View File

@ -12,15 +12,7 @@
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -28,9 +20,9 @@
<div class="my_l">
<ul class="log_list">
<li><a class="link_1 on" href="/">爬虫源管理</a></li>
<li><a class="link_1" href="/">爬虫源管理</a></li>
<li><a class="link_1" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<li><a class="link_1 on" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!--<li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>
@ -64,12 +56,12 @@
示例:<b>value=\"(\\d+)/\\d+\"</b>
<li><input type="text" id="rule" class="s_input icon_name" placeholder="规则"></li>
示例:<b>1强制刷新 空或0使用缓存</b>
<li><input type="text" id="isRefresh" class="s_input icon_name" placeholder="是否强制刷新"></li>
<li><input type="text" id="isRefresh" class="s_input icon_name" placeholder="是否强制刷新">
</li>
<li><textarea rows="20" cols="100" id="resultMap"></textarea></li>
<li><input type="button" onclick="testCrawlSource()" name="btnRegister" value="测试"
id="btnRegister" class="btn_red"></li>
</ul>
@ -120,11 +112,12 @@
<script src="/javascript/user.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function load() {
var testParseUrl= localStorage.getItem("testParseUrl");
$("#url").val(testParseUrl);
var testParseRule=localStorage.getItem("testParseRule");
var testParseUrl = localStorage.getItem("testParseUrl");
$("#url").val(testParseUrl);
var testParseRule = localStorage.getItem("testParseRule");
$("#rule").val(testParseRule);
}
function testCrawlSource() {
var data = {};
@ -145,8 +138,8 @@
}
data.url = url;
localStorage.setItem("testParseUrl",url);
localStorage.setItem("testParseRule",rule);
localStorage.setItem("testParseUrl", url);
localStorage.setItem("testParseRule", rule);
$.ajax({
type: "POST",
url: "/crawl/testParse",

View File

@ -12,15 +12,7 @@
</head>
<body class="">
<div class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋爬虫管理
</div>
</div>
<div th:replace="crawl/header :: header">
</div>
<div class="main box_center cf">
@ -30,7 +22,7 @@
<ul class="log_list">
<li><a class="link_1 on" href="/">爬虫源管理</a></li>
<li><a class="link_1" href="/crawl/crawlSingleTask_list.html">单本采集管理</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank" >规则测试</a></li>
<li><a class="link_1" href="/crawl/crawlSource_test.html" target="_blank">规则测试</a></li>
<!--<li><a class="link_1 " href="/user/userinfo.html">批量小说爬取</a></li>
<li><a class="link_4 " href="/user/favorites.html">单本小说爬取</a></li>-->
</ul>
@ -204,12 +196,12 @@
<script src="/javascript/user.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function load(){
function load() {
var crawlSourceId = localStorage.getItem("crawlSourceId")
if(crawlSourceId!=null){
if (crawlSourceId != null) {
$.ajax({
type: "GET",
url: "/crawl/getCrawlSource/"+crawlSourceId,
url: "/crawl/getCrawlSource/" + crawlSourceId,
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -218,7 +210,7 @@
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -229,20 +221,21 @@
})
}
}
function loadPage(data){
function loadPage(data) {
$("#sourceId").val(data.id);
$("#sourceName").val(data.sourceName);
if(data.crawlRule){
if (data.crawlRule) {
var crawlRule= JSON.parse(data.crawlRule);
var crawlRule = JSON.parse(data.crawlRule);
$("#bookListUrl").val(crawlRule.bookListUrl);
var catIdRule = crawlRule.catIdRule;
try{
try {
for (var i = 1; i <= 7; i++) {
$("#catId" + i).val(catIdRule["catId" + i]);
}
}catch(e){
} catch (e) {
}
$("#bookIdPatten").val(crawlRule.bookIdPatten);
$("#pagePatten").val(crawlRule.pagePatten);
@ -253,14 +246,14 @@
$("#picUrlPatten").val(crawlRule.picUrlPatten);
$("#picUrlPrefix").val(crawlRule.picUrlPrefix);
$("#statusPatten").val(crawlRule.statusPatten);
try{
try {
var bookStatusRule = crawlRule.bookStatusRule;
var i=0;
for(var key in bookStatusRule){
var i = 0;
for (var key in bookStatusRule) {
$("#bookStatus" + i).val(key);
i++;
}
}catch (e) {
} catch (e) {
}
$("#scorePatten").val(crawlRule.scorePatten);
@ -279,12 +272,13 @@
}
}
load();
function updateCrawlSource() {
var crawlRule = {};
var sourceId =$("#sourceId").val();
var sourceId = $("#sourceId").val();
var sourceName = $("#sourceName").val();
if (sourceName.length == 0) {
@ -498,7 +492,7 @@
$.ajax({
type: "POST",
url: "/crawl/updateCrawlSource",
data: {'id':sourceId,'sourceName': sourceName, 'crawlRule': JSON.stringify(crawlRule)},
data: {'id': sourceId, 'sourceName': sourceName, 'crawlRule': JSON.stringify(crawlRule)},
dataType: "json",
success: function (data) {
if (data.code == 200) {

View File

@ -0,0 +1,28 @@
<div th:fragment="header" class="header">
<div class="mainNav" id="mainNav">
<div class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;width: 100%">
小说精品屋爬虫管理
<div style="text-align: center;height: 44px;line-height: 48px;font-size: 14px;float: right;padding-right: 20px">
<a style="color: #fff;"
href="/logout">
退出
</a>
</div>
<div style="float: right;margin-right:5px;margin-top: 15px">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img"
class="mr-3 iconify iconify--gitee icon-user-arrow-right" width="16" height="16"
preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16">
<g fill="none" fill-rule="evenodd">
<path d="M0 0h16v16H0z"></path>
<path fill="currentColor" fill-rule="nonzero"
d="M8 1.5a3.5 3.5 0 01.192 6.995L8 8.5a5.75 5.75 0 00-5.75 5.75.5.5 0 11-1 0 6.753 6.753 0 014.681-6.427A3.5 3.5 0 018 1.5zm6.996 10.767.003.041v.002l.001.011a.51.51 0 010 .006v.006l-.002.03a.502.502 0 01-.004.037l-.002.011a.39.39 0 01-.016.063.491.491 0 01-.053.114l-.028.039-.031.035.027-.03-.009.011-.017.02-.011.012-2.122 2.121a.5.5 0 01-.707-.707l1.268-1.268H9.5a.5.5 0 110-1h3.794l-1.269-1.267a.5.5 0 11.707-.708l2.122 2.122a.491.491 0 01.135.248l.005.037v-.006zM8 2.5a2.5 2.5 0 100 5 2.5 2.5 0 000-5z"></path>
</g>
</svg>
</div>
</div>
</div>
</div>

View File

@ -5,25 +5,56 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Please sign in</title>
<title>爬虫管理系统登录</title>
<link href="/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="/css/signin.css" rel="stylesheet" crossorigin="anonymous"/>
<style>
.btn-primary {
color: #fff;
background-color: #3eaf7c;
border-color: #3eaf7c
}
.btn-primary:hover {
color: #fff;
background-color: #65bf96;
border-color: #65bf96
}
.btn-primary.focus, .btn-primary:focus {
box-shadow: 0 0 0 3px rgba(101, 191, 96, .5)
}
.btn-primary.disabled, .btn-primary:disabled {
background-color: #3eaf7c;
border-color: #3eaf7c
}
.form-control:focus {
color: #495057;
background-color: #fff;
border-color: #78c7a3;
outline: 0
}
</style>
</head>
<body>
<div class="container">
<form class="form-signin" method="post" action="/login">
<h2 class="form-signin-heading">Please sign in</h2>
<h4 style="text-align: center" class="form-signin-heading">爬虫管理系统登录</h4>
<p>
<label for="username" class="sr-only">Username</label>
<input type="text" id="username" name="username" class="form-control" placeholder="Username" required
<label for="username" class="sr-only">用户名</label>
<input type="text" id="username" name="username" class="form-control" placeholder="用户名" required
autofocus>
</p>
<p>
<label for="password" class="sr-only">Password</label>
<input type="password" id="password" name="password" class="form-control" placeholder="Password" required>
<label for="password" class="sr-only">密码</label>
<input type="password" id="password" name="password" class="form-control" placeholder="密码" required>
</p>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
<button class="btn btn-lg btn-primary btn-block" type="submit">登录</button>
</form>
</div>
</body>

View File

@ -1,6 +1,9 @@
FROM java:8
ADD novel-front-1.1.0.jar /root
FROM openjdk:8
ADD novel-front-4.2.0.jar /root
ENV dburl=""
ENV username=""
ENV password=""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -jar /root/novel-front-1.1.0.jar"]
ENV redishost = ""
ENV redisport = ""
ENV redispwd = ""
ENTRYPOINT ["sh","-c","java -Dspring.datasource.url=${dburl} -Dspring.datasource.username=${username} -Dspring.datasource.password=${password} -Dspring.redis.host=${redishost} -Dspring.redis.port=${redisport} -Dspring.redis.password=${redispwd} -jar /root/novel-front-4.2.0.jar"]

View File

@ -6,6 +6,7 @@ import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.config.AlipayProperties;
@ -79,8 +80,8 @@ public class PayController extends BaseController {
bizContent.put("product_code", "QUICK_WAP_WAY");
alipayRequest.setBizContent(bizContent.toString());
AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest);
form = alipayClient.pageExecute(alipayRequest).getBody();
AlipayTradeWapPayResponse payResponse = alipayClient.pageExecute(alipayRequest);
form = payResponse.getBody();
} else {
// 电脑站
//创建API对应的request
@ -96,7 +97,8 @@ public class PayController extends BaseController {
" \"subject\":\"小说精品屋-plus\"" +
" }");
//调用SDK生成表单
form = alipayClient.pageExecute(alipayRequest).getBody();
AlipayTradePagePayResponse payResponse = alipayClient.pageExecute(alipayRequest);
form = payResponse.getBody();
}

View File

@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.java2nb.novel.entity.UserBookshelf;
import lombok.Data;
import javax.annotation.Generated;
import java.util.Date;
/**
@ -29,6 +28,7 @@ public class BookShelfVO extends UserBookshelf {
private String bookDesc;
@JsonFormat(timezone = "GMT+8", pattern = "MM/dd HH:mm")
private Date lastIndexUpdateTime;
private Byte bookStatus;

View File

@ -1,17 +1,17 @@
alipay:
#请填写您的AppId例如2019091767145019
app-id: 2016101600696458
app-id: 2021000122670235
#请填写您的应用私钥例如MIIEvQIBADANB
merchant-private-key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCJrd9qg88m1p9c7IopcGlLksP9ts0eaf1wesgz4K3O6CzmgaCfR2f+scRI4xrMhKBHfzKDdKlW16LtrebD/YS/aDhRL9MM1GJ0Pr7zFdw6fIka9eIz1FojmmXNyaQVEbaGt/7DvoI+rJjjNtTQAYpMztHnof2W0Nfpra5U4dShJrzsvumS8NapEt9YgQ36jY9Z40RJ97Z06avmMGrAVlQSSTvUInTYz8EQmM3YN0ed3CmnlQFRhuW7kkbgBtZKjq+24iaU2mzp4qvWi5T89l3wuMahhxhFTgTNd24qxFuYShIdD0G3KCtunpwegomj1iQnF47qGv97UwOuA36b6l75AgMBAAECggEAJraZZ94AVa9ryDlK8DQHp5RxP9oy+yZaeVJNESlQNina1kYE4ES33UonI0eYtYFlgDUoAwa+xwiDa8nGZb3XoeqwS0PjWGwv8vfhwYCYGGoEM2yIWoKPhgtYLPFSDgqZBHCgVnIvNWha5Sj51jNYrBhLtZI7ODkpPS/1ITEPFPDds9LmH3Ujci20ttzr1SffKL/1caZ2Xph/Jkm2Xhh227cclORakDsggUmaxt723zibwFwpS6wwRlPJYf7hr3v3SnIgcc0osqKAcnJzrBlmaJVTBgnOAdulp+m/DjKVoIEieMr75OIYTWMRi0trlxAyvv4aDHxxJB6cDGNHFQLIMQKBgQD5j4fJDub2n9EjgxqYS9B6qa2pH5S9yypU+mM6fIXO/AjHpNwEzFQgU8lN3FE1CVfFb4yZx8sOJsQvZPGLvIhMPYT/2xMOIRL2IguJICt23Xnw+c1tNkvHvsHAiLvo/yzwSFixHcOaEwXDKUDsydPyalDFWBrwCGmGGxPEFG/Q/wKBgQCNO0+Muo+HzeUButDyA5gt9oPCX7uZ9g64rnFhuQXZ/eLDQeCW/lhjRiT2R+QafvbRyOYYomKZ6/1iQALY4tqQD7XMClRdu0OUvYR2WaNb9j4sWXl8qhMxgWjXssqorZRzNe+txicX8yOA5/ZVhhq647e2zt4kOS5H6Np0HvxYBwKBgQDvNfA+/cTPk4NhWdLNNqagXTJz0Sy+/BYYnGUu85tDOvyjeVfYVY8x6X4k3tEMWGdEfdc0tHjjmK8misipW8793V417WUHfxZwzVNnXmmrJ0IyhQ+u5oOe9C8+ARK1lJsbuw0gwNn0PtWgK1PrZM5/J/9CGmC/wiB8BkpdAgXoOwKBgE5fa3Wc0al7CGo9UVX7yKc49UUX+vMlKGYz55djJWwjB4NzOz6PRl1Qv5IrstlBO5aO9aEV+8GOw72R6AKTYNYw4aGo2chp8sbHpIpIk+6kZzwVKuWTO7NtLNEF1pBkQszsUWUNYQRZWIpgLsKm+I5db8VyZrOTR6t//DoUN9RhAoGAQLNaaULlw5L2Qsq9hbsdZVkbZN6YY4oiqMufmDKavbpUvchagFBe7/bneX4orza+DiC4vBFDIUOsZawB9eStx8hvL4AcuUF+eoZT3FCmvHB8dAYs4vok28f1nqUpYLmu4yN+wc/sLhihaJd7keErc987/E8mxW18AEin4Q4pKK8=
merchant-private-key: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCJSQwBRWgW007frn6xljO4TyUoj3gIdzE+TEEjR+2aKCJFWDwQsiPcNJgU3YTk6OxuRn6J4RNQ6ex5Vh7FKdUy6NxJcN+094mIbLzJWoypTeifKx4+C7lzo6Ip+2/2QM13Ih9uRSnBU1vw2W8Y/N/SJfNuGACI1QjCtakk4NIkZQL+/rm+iXbYWrxbaP0nd1uREw07g7uP4S51AvOhLie5ozIMeQRfRzemuY6qINQOkCZlj4eFm0flgREcHRxwl/yK154IY+JDKvyTHgtSxRrVS8Okk+R69iddmrXp1X7CJBjthbx6jrBYjtIp2/E9ru+4/kHwhSOFXIoFfr0kiImvAgMBAAECggEABQ8TCSz0k/q/alC0zHh7eWw5M1BuHOm/f8sxj0pEQC0Abku9EuRtm9y4SfSLxB+tLrccTJplqtKj6yi4Q42yFIkuLOqi47lHcSaIombazhZX3x2opKKr983s2N0yGAH1UFGKlPapfj1DIxHwHRycZtMNMF5kDqbDBuHI1NoQBFVCpKWU5hvQS/Hyg4M+qybl7DGZX26/HQpe1Y5Q6GnRmiLvnDdoRwYaQ8tcnFCgKysLMairLGY2HyCloujrEEBJLzuifdr+VS6PsKN5Na73uoAkZhACxqIeGs93jMa3umMAlrunc7yr6PImlxZ0F1r2LZ8uHuIMoPMqhsLJgE1DQQKBgQDUvjsB7tbX0/XXkMzwb1srblPK4sSFzPnnHKJWtZm0lV6INEOtEh+1MbGRUhuxeRMdntJTq9xdyaVbzgu4Ai7ju1RMXUkpEnEdv0pS7/MWpP7psTw3lrjw3qai/J5+bPdo94FRgY6GiHHDP/K1FmLklbJh970+BjH7VeIzpbgwoQKBgQClMxDv65t4I6O0nebDbaKX5297509RWFFm8TgtHVMmSx1c3pEWl9jS7NsAPX51ZSDFtQ0Km5YnV+GQQB9jP07C/41QBr8dqeZn3p9DqKiGawpKnHtPU99tTsRVeLAcToZek/ALoiuOc5DCCRJYehSnHTdWXymvHeBN0bYpjVyITwKBgAXmyQhCsd8G2DkEoUrCLAtGYjislbsIdp48oxw4qWzi/95TZNU2PX7vQ/e+CVqg+zDFKRx9Ff3cDCRB0P1nwhk7Jxl/NPpYsp6aodsvINUt+oxNCFiaa8LyyjiXPWZQa4ST6RhzuZptyooaCgeP+WpR5MLm9m70CQrp1P6NyFBBAoGBAJ5hhyt+R1+3S4wulr9mrSvVxxyTd4gVlHWNbr5SDxX3jf8row52JnqSeqSQUF1cxz7FhetVn2+44Zja4TzVxT1OpLzEuxZFfZC37xl+6ZN1rDg8LjyvvNWfXrxTKQT6g/jI/Ksqn3fDdFWTPPN2l7ZgXF2CfwRVMGdrV6oezUghAoGBAIRRcCbk9nJo05aUdbRyInbeaG53C1WK2rNAToGSF95vyL/KmP9jUfvckonRlxC3OEWnmx7qvxI8Lb6y/uoczCCOKVf9SwODU1hxJj4RKZMpAtOslnL9psAIEQhGpG/gyOtHngU4dy6LubgZ6LhRXrSvfiJGVFo+vxHki8cXzDV0
#支付宝公钥字符串
public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoR1gAyrjj/XugdKT3zUJBJksYnCXxD3RDiBex+JGfo6oO0oPbyoIQb2cAIIJjCCxT97QATlbYpRGMa+RuXxlxTeBh5ZFkELOsGc/UX0d9Tm51UvN+OV5pyysytlRdZfVgOETORzv9CvfnK7ND1SSHUPDan7TkMoVFipmQnf8205V3tcsDBat5kHEPFCmWXkPxrtLPVge1dAtKSRW9KFMslXkKrspvF1fSLGt12CE38ZwzP39INKgaI+RbIk3o7aRW5CrLqPkYdrgE1KcFBOj/gJXqbZvL/30q1KVn29UQUYm9SR/n6ZaLlAG38p4O3dL9Lu2lGhTBQlUr2qtpo+g8QIDAQAB
public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAshLjMIEXKrd2/V4za4xp8q7maNQM72LrQh2FpVzJeW785iniux/1rEy2CPu0kZqGB9teDdea3yU++9mGe3Xod74RLPqHeVGdLkOvdav3e+UrXmsHSjLbaCd9gN1BCUIfh0mxlpxXiL34KIjI7iiREuSvRWwoPI9IHOY4AgnlFEIzu/wKb/F80ddywtxKZpQTa8pwGay2zQ71xjpxT7EFNJ4M00Utq0Nl1v/FgXCO8UEIdy6YvEfLNUvwCDEaN40lKUMpCoZRq8/xBTkwFhAswZKo1mlUnwoq+01cpNLQtZ0uOKGpuQkN9oSn0hKEcDtn5oK/hnEwnCSrGvVHSwF2HwIDAQAB
#填写您的支付类接口异步通知接收服务地址例如https://www:test:com/callback:
notify-url: http://50148a0b.ngrok.io/pay/aliPay/notify
notify-url: https://73837v3i42.goho.co/pay/aliPay/notify
#支付成功跳转页面
return-url: http://127.0.0.1:8080/user/userinfo.html
return-url: http://127.0.0.1:8083/user/userinfo.html
#签名方式
sign-type: RSA2
#编码
charset: utf-8
#支付宝网关
gateway-url: https://openapi.alipaydev.com/gateway.do
gateway-url: https://openapi-sandbox.dl.alipaydev.com/gateway.do

View File

@ -12,7 +12,7 @@ spring:
#模版配置
templates:
name: orange
name: green
pic:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

@ -3,7 +3,7 @@
.my_l { width: 198px; float: left; font-size: 13px;
padding-top: 20px; }
.my_l li a { display: block; height: 48px; line-height: 48px; padding-left: 40px; border-left: 2px solid transparent; font-size: 14px; margin: 0 0 2px; }
.my_l li .on { border-left: 2px solid #f80; background: #f8f8f8 }
.my_l li .on { border-left: 2px solid #3eaf7c; background: #f8f8f8 }
.my_r { width: 739px; padding: 30px; float: right; border-left: 1px solid #ededed; min-height: 470px; background: #fff }
.my_r .title { padding: 15px 0 }
.my_r h4 { font-size: 15px; color: #666; font-weight: bold }

File diff suppressed because it is too large Load Diff

View File

@ -1,155 +1,813 @@
@charset "utf-8";
.Interaction_tab a, .Interaction_tab a .icon, .Interaction_tab a.fr .icon, .dashang_bar .l_bar .list li, .btn_pc, .btn_flw, .fansBox .fans_bg, .icon_hg { background: url(../images/icon_interation.png) no-repeat }
.InteractionBox { padding: 15px 14px 11px }
.Interaction_tab a { width: 339px; height: 60px; line-height: 60px; font-size: 14px; color: #000 }
.Interaction_tab a, .Interaction_tab a .icon, .Interaction_tab a.fr .icon, .dashang_bar .l_bar .list li, .btn_pc, .btn_flw, .fansBox .fans_bg, .icon_hg {
background: url(../images/icon_interation.png) no-repeat
}
.InteractionBox {
padding: 15px 14px 11px
}
.Interaction_tab a {
width: 339px;
height: 60px;
line-height: 60px;
font-size: 14px;
color: #000
}
/*.Interaction_tab a:hover, .Interaction_tab a.on { background-position: 0 -60px; color: #000 }*/
.Interaction_tab a .icon { width: 38px; height: 60px; float: left; margin: 0 10px 0 64px; background-position: -348px 0 }
.Interaction_tab a.fr .icon { background-position: -348px -60px }
.Interaction_tab h4 { font-size: 17px; margin-right: 8px; display: inline }
.InteractionBox .l_bar, .InteractionBox .r_bar { width: 335px; margin: 0 2px; float: left }
.InteractionBox .r_bar .time { padding-right: 1px }
.InteractionBox .l_bar .tit { padding: 22px 14px 0 4px }
.InteractionBox .l_bar .tit .red, .InteractionBox .r_bar .tit .red { padding: 0 5px }
.InteractionBox .l_bar .tit .fl { font-size: 17px }
.InteractionBox .l_bar .tit .fr { padding-top: 7px }
.dashang_bar .l_bar .list { padding-top: 20px }
.dashang_bar .l_bar .list li { width: 90px; height: 134px; line-height: 1; float: left; margin: 0 20px 0 6px; text-align: center; background-position: 0 -130px }
.dashang_bar .l_bar .list li img { width: 60px; height: 60px; background: #fff; margin: 35px 15px 10px; border-radius: 50%; box-shadow: 0 1px 0 rgba(0,0,0,.3) }
.dashang_bar .l_bar .list li .user_name { line-height: 1!important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; padding: 0 10px }
.dashang_bar .l_bar .list .li_1 { }
.dashang_bar .l_bar .list .li_2 { background-position: -100px -130px }
.dashang_bar .l_bar .list .li_3 { background-position: -200px -130px; margin-right: 0 }
.InteractionBox .r_bar .tit { padding: 14px 1px 12px 1px }
.InteractionBox .r_bar .tit strong { display: block; font-size: 13px }
.InteractionBox .r_bar .list, .InteractionBox .r_bar .sum { margin: 0 1px }
.InteractionBox .r_bar .list li { height: 27px; line-height: 27px; overflow: hidden; border-top: 1px dotted #ccc; color: #999 }
.InteractionBox .r_bar .list li .user_name { margin-right: 8px }
.InteractionBox .r_bar .sum { border-top: 1px dotted #ccc; line-height: 34px }
.btn_pc, .btn_flw { width: 140px; height: 44px; display: inline-block; background-position: 0 -270px }
.btn_flw { width: 122px; background-position: -150px -270px }
.flower_bar .l_bar .list { padding: 0 14px 0 4px }
.flower_bar .l_bar li { padding: 15px 0 6px; overflow: hidden; clear: both }
.flower_bar .l_bar .book_intro { width: 265px }
.flower_bar .l_bar .cover img { width: 45px; height: 56px; background: #f6f6f6; margin: 2px 16px 0 0 }
.flower_bar .l_bar .book_intro .txt { height: 38px; line-height: 18px; padding-top: 2px; color: #999; overflow: hidden; display: block }
.r_fansBrank .book_intro { float: inherit!important }
.user_level1, .user_level2, .user_level3, .user_level4, .user_level5, .user_level6, .user_level7, .user_level8, .user_level9, .user_level10, .user_level11 { width: 30px; height: 16px; line-height: 16px; text-align: center; border-radius: 2px; margin: 11px 0 0; color: #fff }
.user_level1 { background: #d0d0d0 }
.user_level2 { background: #c0c0c0 }
.user_level3 { background: #b4b3b3 }
.user_level4 { background: #a0dfe6 }
.user_level5 { background: #77d2db }
.user_level6 { background: #b4d894 }
.user_level7 { background: #94c766 }
.user_level8 { background: #ffc24c }
.user_level9 { background: #ffa800 }
.user_level10 { background: #ff6e26 }
.user_level11 { background: #ff0000 }
.Interaction_tab a .icon {
width: 38px;
height: 60px;
float: left;
margin: 0 10px 0 64px;
background-position: -348px 0
}
.Interaction_tab a.fr .icon {
background-position: -348px -60px
}
.Interaction_tab h4 {
font-size: 17px;
margin-right: 8px;
display: inline
}
.InteractionBox .l_bar, .InteractionBox .r_bar {
width: 335px;
margin: 0 2px;
float: left
}
.InteractionBox .r_bar .time {
padding-right: 1px
}
.InteractionBox .l_bar .tit {
padding: 22px 14px 0 4px
}
.InteractionBox .l_bar .tit .red, .InteractionBox .r_bar .tit .red {
padding: 0 5px
}
.InteractionBox .l_bar .tit .fl {
font-size: 17px
}
.InteractionBox .l_bar .tit .fr {
padding-top: 7px
}
.dashang_bar .l_bar .list {
padding-top: 20px
}
.dashang_bar .l_bar .list li {
width: 90px;
height: 134px;
line-height: 1;
float: left;
margin: 0 20px 0 6px;
text-align: center;
background-position: 0 -130px
}
.dashang_bar .l_bar .list li img {
width: 60px;
height: 60px;
background: #fff;
margin: 35px 15px 10px;
border-radius: 50%;
box-shadow: 0 1px 0 rgba(0, 0, 0, .3)
}
.dashang_bar .l_bar .list li .user_name {
line-height: 1 !important;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: block;
padding: 0 10px
}
.dashang_bar .l_bar .list .li_1 {
}
.dashang_bar .l_bar .list .li_2 {
background-position: -100px -130px
}
.dashang_bar .l_bar .list .li_3 {
background-position: -200px -130px;
margin-right: 0
}
.InteractionBox .r_bar .tit {
padding: 14px 1px 12px 1px
}
.InteractionBox .r_bar .tit strong {
display: block;
font-size: 13px
}
.InteractionBox .r_bar .list, .InteractionBox .r_bar .sum {
margin: 0 1px
}
.InteractionBox .r_bar .list li {
height: 27px;
line-height: 27px;
overflow: hidden;
border-top: 1px dotted #ccc;
color: #999
}
.InteractionBox .r_bar .list li .user_name {
margin-right: 8px
}
.InteractionBox .r_bar .sum {
border-top: 1px dotted #ccc;
line-height: 34px
}
.btn_pc, .btn_flw {
width: 140px;
height: 44px;
display: inline-block;
background-position: 0 -270px
}
.btn_flw {
width: 122px;
background-position: -150px -270px
}
.flower_bar .l_bar .list {
padding: 0 14px 0 4px
}
.flower_bar .l_bar li {
padding: 15px 0 6px;
overflow: hidden;
clear: both
}
.flower_bar .l_bar .book_intro {
width: 265px
}
.flower_bar .l_bar .cover img {
width: 45px;
height: 56px;
background: #f6f6f6;
margin: 2px 16px 0 0
}
.flower_bar .l_bar .book_intro .txt {
height: 38px;
line-height: 18px;
padding-top: 2px;
color: #999;
overflow: hidden;
display: block
}
.r_fansBrank .book_intro {
float: inherit !important
}
.user_level1, .user_level2, .user_level3, .user_level4, .user_level5, .user_level6, .user_level7, .user_level8, .user_level9, .user_level10, .user_level11 {
width: 30px;
height: 16px;
line-height: 16px;
text-align: center;
border-radius: 2px;
margin: 11px 0 0;
color: #fff
}
.user_level1 {
background: #d0d0d0
}
.user_level2 {
background: #c0c0c0
}
.user_level3 {
background: #b4b3b3
}
.user_level4 {
background: #a0dfe6
}
.user_level5 {
background: #77d2db
}
.user_level6 {
background: #b4d894
}
.user_level7 {
background: #94c766
}
.user_level8 {
background: #ffc24c
}
.user_level9 {
background: #ffa800
}
.user_level10 {
background: #ff6e26
}
.user_level11 {
background: #ff0000
}
/*固定悬浮图层*/
.readPopup { border: 1px solid #D9D9D9; border-radius: 3px; background: #FFF; box-shadow: 0 1px 2px #999; overflow: hidden; padding-bottom: 20px; z-index: 9999; position: fixed; left: 50%; top: 50% }
.icon_check { position: absolute; width: 29px; height: 25px; right: -1px; top: -1px; z-index: 2; background: url(../images/icon_readpage.png) no-repeat 0 -142px }
.on .icon_check { display: block }
.closePopup { position: absolute; top: 20px; right: 20px; width: 16px; height: 15px; background: url(../images/icon_readpage.png) no-repeat -43px -126px }
.chapterBox { width: 600px; margin-left: -300px; margin-top: -260px }
.chapterBox .scrollWrap { height: 540px }
.readPopup {
border: 1px solid #D9D9D9;
border-radius: 3px;
background: #FFF;
box-shadow: 0 1px 2px #999;
overflow: hidden;
padding-bottom: 20px;
z-index: 9999;
position: fixed;
left: 50%;
top: 50%
}
.icon_check {
position: absolute;
width: 29px;
height: 25px;
right: -1px;
top: -1px;
z-index: 2;
background: url(../images/icon_readpage.png) no-repeat 0 -142px
}
.on .icon_check {
display: block
}
.closePopup {
position: absolute;
top: 20px;
right: 20px;
width: 16px;
height: 15px;
background: url(../images/icon_readpage.png) no-repeat -43px -126px
}
.chapterBox {
width: 600px;
margin-left: -300px;
margin-top: -260px
}
.chapterBox .scrollWrap {
height: 540px
}
/*弹窗内容*/
.popupTit h2 { text-align: center; letter-spacing: 15px; color: #333; font: 700 20px/30px "Microsoft Yahei"; margin: 30px 0 }
.popupTit h3 { font-size: 16px; margin: 15px 20px }
.scrollWrap { overflow-y: scroll; position: relative }
.dirWrap { padding: 0 40px }
.scrollWrap h3 { padding-left: 26px; font-size: 14px; background: #e6e6e6; height: 30px; line-height: 30px; font-weight: normal; position: relative; cursor: pointer; margin: 0 0 15px; border-radius: 3px }
.readPopup .tc .btn_gray { margin-left: 30px }
.popupTit h2 {
text-align: center;
letter-spacing: 15px;
color: #333;
font: 700 20px/30px "Microsoft Yahei";
margin: 30px 0
}
.popupTit h3 {
font-size: 16px;
margin: 15px 20px
}
.scrollWrap {
overflow-y: scroll;
position: relative
}
.dirWrap {
padding: 0 40px
}
.scrollWrap h3 {
padding-left: 26px;
font-size: 14px;
background: #e6e6e6;
height: 30px;
line-height: 30px;
font-weight: normal;
position: relative;
cursor: pointer;
margin: 0 0 15px;
border-radius: 3px
}
.readPopup .tc .btn_gray {
margin-left: 30px
}
/*捧场、送鲜花*/
.pcBox, .flowerBox { width: 500px; margin-left: -251px; margin-top: -215px }
.propsList { padding: 15px 0 10px 20px }
.propsList li { float: left; cursor: pointer; margin: 0 8px 16px; text-align: center }
.propWrap { width: 134px; height: 54px; line-height: 54px; text-align: center; font-size: 15px; color: #000; display: block; border: 1px solid #e6e6e6; background: #fafafa; position: relative }
.on .propWrap, .propWrap:hover { width: 132px; height: 52px; line-height: 52px; color: #f70; border: 2px solid #f80; background: #fff }
.propsList li i { display: none; line-height: 1 }
.propsList li .propsBox { padding-top: 20px }
.have_num { padding: 0 30px 10px; font-size: 14px; color: #999 }
.have_num .red { margin: 0 4px }
.popup_text { width: 418px; height: 62px; padding: 8px 10px; margin: 8px 30px 20px; color: #555; border: 1px solid #e6e6e6; }
.pcBox, .flowerBox {
width: 500px;
margin-left: -251px;
margin-top: -215px
}
.propsList {
padding: 15px 0 10px 20px
}
.propsList li {
float: left;
cursor: pointer;
margin: 0 8px 16px;
text-align: center
}
.propWrap {
width: 134px;
height: 54px;
line-height: 54px;
text-align: center;
font-size: 15px;
color: #000;
display: block;
border: 1px solid #e6e6e6;
background: #fafafa;
position: relative
}
.on .propWrap, .propWrap:hover {
width: 132px;
height: 52px;
line-height: 52px;
color: #3eaf7c;
border: 2px solid #3eaf7c;
background: #fff
}
.propsList li i {
display: none;
line-height: 1
}
.propsList li .propsBox {
padding-top: 20px
}
.have_num {
padding: 0 30px 10px;
font-size: 14px;
color: #999
}
.have_num .red {
margin: 0 4px
}
.popup_text {
width: 418px;
height: 62px;
padding: 8px 10px;
margin: 8px 30px 20px;
color: #555;
border: 1px solid #e6e6e6;
}
/*消息提示*/
.newsTipBox { width: 400px; padding-bottom: 30px; margin-left: -200px; margin-top: -105px }
.tipWrap { padding: 30px; font-size: 14px }
.newsTipBox {
width: 400px;
padding-bottom: 30px;
margin-left: -200px;
margin-top: -105px
}
.tipWrap {
padding: 30px;
font-size: 14px
}
/*遮罩层*/
.maskBox { position: fixed; left: 0; top: 0; z-index: 995; width: 100%; height: 100%; background: black; filter: alpha(opacity=30); opacity: 0.3; animation: mask 2s ease-out 0s 1 normal }
@keyframes mask { 0% {
filter:alpha(opacity=0);
opacity:0
.maskBox {
position: fixed;
left: 0;
top: 0;
z-index: 995;
width: 100%;
height: 100%;
background: black;
filter: alpha(opacity=30);
opacity: 0.3;
animation: mask 2s ease-out 0s 1 normal
}
100% {
filter:alpha(opacity=30);
opacity:0.3
@keyframes mask {
0% {
filter: alpha(opacity=0);
opacity: 0
}
100% {
filter: alpha(opacity=30);
opacity: 0.3
}
}
.fansBox {
width: 998px;
border: 1px solid #eaeaea
}
.fansHead {
height: 54px;
line-height: 54px;
margin: 0 14px;
border-bottom: 1px solid #eaeaea;
font-weight: normal
}
.fansHead h2 {
font-size: 20px;
font-weight: normal
}
.fansCon {
padding: 20px
}
.fansCon .r_bar {
width: 204px
}
.fansCon .cover {
width: 200px;
height: 250px;
background: #f6f6f6;
border: 1px solid #ebebeb;
padding: 1px;
}
.fansCon .btn_red {
width: 202px;
margin: 2px 0 14px;
padding: 10px 0
}
.fansCon .l_bar {
width: 750px
}
.fansCon .l_bar .list1 {
padding-top: 4px
}
.fansCon .list1 li {
width: 33%;
line-height: 1;
float: left
}
.fansCon .list1 .fans_bg {
width: 90px;
height: 112px;
background-position: 0 -320px;
position: relative;
margin-right: 18px
}
.fansCon .list1 .fans_bg img {
width: 60px;
height: 60px;
background: #fff;
margin: 39px 15px 0;
border-radius: 50%;
box-shadow: 0 1px 0 rgba(0, 0, 0, .3)
}
.fansCon .list1 h5 {
font-size: 16px;
padding: 9px 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.fansCon .list1 li .user_name {
line-height: 1 !important
}
.fansCon .list1 .li_2 .fans_bg {
background-position: -100px -320px
}
.fansCon .list1 .li_3 .fans_bg {
background-position: -200px -320px
}
.fansCon .fans_info {
width: 136px;
font-size: 14px
}
.fansCon .fans_info .fans_pointer {
padding: 14px 0 22px
}
.fans_level span {
padding: 1px 10px 2px
}
.icon_hg {
width: 30px;
height: 30px;
display: inline-block;
background-position: -300px -320px;
position: absolute;
top: -13px;
right: -13px
}
.fansCon .list2 {
padding: 0
}
.fansCon .list2 li {
width: 250px;
float: left;
height: 59px;
padding: 0 0 19px;
display: inline
}
.fansCon .list2 .num {
font: 16px/59px "microsoft yahei", Arial, "宋体";
width: 32px;
color: #666;
font-weight: bold
}
.fansCon .list2 .img {
width: 40px;
height: 40px;
margin-top: 10px;
position: relative
}
.fansCon .list2 .img img {
width: 100%;
height: 100%;
border-radius: 50%
}
.fansCon .list2 .img span {
display: block;
margin: 0;
position: absolute;
left: 5px;
bottom: 0
}
.fansCon .list2 .msg {
display: inline;
width: 164px;
padding: 8px 0 0 12px;
}
.fansCon .list2 .msg h4 {
line-height: 24px;
font-weight: normal;
font-size: 16px;
overflow: hidden;
height: 24px;
white-space: nowrap;
text-overflow: ellipsis;
}
.fansCon .list2 .msg p {
font-size: 12px;
line-height: 16px;
color: #999;
}
.fansTop {
margin-bottom: 8px;
border-bottom: 1px solid #eaeaea
}
.fans_tab {
width: 1005px;
overflow: hidden;
}
.fans_tab ul {
float: left;
width: 280px;
margin-right: 55px;
}
.fans_tab li {
line-height: 39px;
overflow: hidden;
font-size: 14px;
height: 39px;
border-bottom: 1px solid #ebebeb;
}
.fans_tab li .num {
float: left;
width: 40px;
color: #666;
}
.fans_tab li a {
float: left;
overflow: hidden;
width: 200px;
white-space: nowrap;
text-overflow: ellipsis;
}
.fans_tab li .fans_level {
float: left;
font-size: 12px;
width: 40px;
text-align: right;
color: #999;
}
.fansRule dl {
padding: 20px 20px 30px
}
.fansRule dt {
line-height: 24px;
margin-bottom: 6px;
font-size: 16px;
}
.fansRule dd {
font-size: 12px;
line-height: 20px;
margin-bottom: 16px;
color: #777;
}
.fansRule table {
width: 100%;
border-collapse: collapse;
}
.fansRule table th, .fansRule table td {
font-weight: 400;
min-width: 40px;
padding: 12px 0;
text-align: left;
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
}
.fansRule ol li {
list-style-type: decimal;
list-style-position: inside;
}
.InteractionBox .l_bar, .flower_bar .l_bar {
display: none
}
.dashang_bar {
float: left
}
.flower_bar {
float: right
}
.author_head {
text-align: center
}
.author_head .head img {
width: 64px;
height: 64px;
border-radius: 50%;
background: #f6f6f6;
display: block;
margin: 0 auto
}
.author_head .msg {
margin-top: -4px
}
.author_head .msg h4 {
font-size: 14px;
line-height: 2.4
}
.icon_qyzz {
padding: 5px;
line-height: 1;
background: #3eaf7c;
color: #fff;
border-radius: 3px;
display: inline-block
}
.author_intro, .author_book {
border-top: 1px dotted #e0e0e0
}
.author_intro h4, .author_book h4 {
font-weight: normal;
font-size: 12px;
padding: 10px 0 5px
}
.author_intro .intro_txt, .author_book .book_txt {
line-height: 1.8;
padding-bottom: 10px
}
.author_book .rightList ul {
padding: 0
}
.fansBox { width: 998px; border: 1px solid #eaeaea }
.fansHead { height: 54px; line-height: 54px; margin: 0 14px; border-bottom: 1px solid #eaeaea; font-weight: normal }
.fansHead h2 { font-size: 20px; font-weight: normal }
.fansCon { padding: 20px }
.fansCon .r_bar { width: 204px }
.fansCon .cover { width: 200px; height: 250px; background: #f6f6f6; border: 1px solid #ebebeb; padding: 1px; }
.fansCon .btn_red { width: 202px; margin: 2px 0 14px; padding: 10px 0 }
.fansCon .l_bar { width: 750px }
.fansCon .l_bar .list1 { padding-top: 4px }
.fansCon .list1 li { width: 33%; line-height: 1; float: left }
.fansCon .list1 .fans_bg { width: 90px; height: 112px; background-position: 0 -320px; position: relative; margin-right: 18px }
.fansCon .list1 .fans_bg img { width: 60px; height: 60px; background: #fff; margin: 39px 15px 0; border-radius: 50%; box-shadow: 0 1px 0 rgba(0,0,0,.3) }
.fansCon .list1 h5 { font-size: 16px; padding: 9px 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.fansCon .list1 li .user_name { line-height: 1!important }
.fansCon .list1 .li_2 .fans_bg { background-position: -100px -320px }
.fansCon .list1 .li_3 .fans_bg { background-position: -200px -320px }
.fansCon .fans_info { width: 136px; font-size: 14px }
.fansCon .fans_info .fans_pointer { padding: 14px 0 22px }
.fans_level span { padding: 1px 10px 2px }
.icon_hg { width: 30px; height: 30px; display: inline-block; background-position: -300px -320px; position: absolute; top: -13px; right: -13px }
.fansCon .list2 { padding: 0 }
.fansCon .list2 li { width: 250px; float: left; height: 59px; padding: 0 0 19px; display: inline }
.fansCon .list2 .num { font: 16px/59px "microsoft yahei", Arial, "宋体"; width: 32px; color: #666; font-weight: bold }
.fansCon .list2 .img { width: 40px; height: 40px; margin-top: 10px; position: relative }
.fansCon .list2 .img img { width: 100%; height: 100%; border-radius: 50% }
.fansCon .list2 .img span { display: block; margin: 0; position: absolute; left: 5px; bottom: 0 }
.fansCon .list2 .msg { display: inline; width: 164px; padding: 8px 0 0 12px; }
.fansCon .list2 .msg h4 { line-height: 24px; font-weight: normal; font-size: 16px; overflow: hidden; height: 24px; white-space: nowrap; text-overflow: ellipsis; }
.fansCon .list2 .msg p { font-size: 12px; line-height: 16px; color: #999; }
.fansTop { margin-bottom: 8px; border-bottom: 1px solid #eaeaea }
.fans_tab { width: 1005px; overflow: hidden; }
.fans_tab ul { float: left; width: 280px; margin-right: 55px; }
.fans_tab li { line-height: 39px; overflow: hidden; font-size: 14px; height: 39px; border-bottom: 1px solid #ebebeb; }
.fans_tab li .num { float: left; width: 40px; color: #666; }
.fans_tab li a { float: left; overflow: hidden; width: 200px; white-space: nowrap; text-overflow: ellipsis; }
.fans_tab li .fans_level { float: left; font-size: 12px; width: 40px; text-align: right; color: #999; }
.fansRule dl { padding: 20px 20px 30px }
.fansRule dt { line-height: 24px; margin-bottom: 6px; font-size: 16px; }
.fansRule dd { font-size: 12px; line-height: 20px; margin-bottom: 16px; color: #777; }
.fansRule table { width: 100%; border-collapse: collapse; }
.fansRule table th, .fansRule table td { font-weight: 400; min-width: 40px; padding: 12px 0; text-align: left; border-top: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb; }
.fansRule ol li { list-style-type: decimal; list-style-position: inside; }
.InteractionBox .l_bar, .flower_bar .l_bar { display: none }
.dashang_bar { float: left }
.flower_bar { float: right }
.author_head { text-align: center }
.author_head .head img { width:64px; height:64px; border-radius: 50%; background:#f6f6f6; display: block; margin: 0 auto }
.author_head .msg { margin-top: -4px }
.author_head .msg h4 { font-size:14px; line-height:2.4 }
.icon_qyzz { padding: 5px; line-height:1; background:#f70; color:#fff; border-radius:3px; display:inline-block }
.author_intro, .author_book { border-top:1px dotted #e0e0e0 }
.author_intro h4,.author_book h4 { font-weight: normal; font-size: 12px; padding:10px 0 5px }
.author_intro .intro_txt, .author_book .book_txt { line-height:1.8; padding-bottom:10px }
.author_book .rightList ul { padding:0 }
.tj_bar .cover { float: left; display: block; margin-right: 10px }
.tj_bar .cover img { width: 64px; height: auto; background: #f6f6f6 }
.tj_bar .book_intro { padding: 15px 0; clear: both; word-break: break-all; zoom: 1; overflow: hidden }
.tj_bar .dec { width: 136px; float: right }
.tj_bar .book_intro .book_name { display: block; font-size: 14px; line-height: 1; white-space: nowrap; text-overflow: ellipsis; overflow: hidden }
.tj_bar .book_intro .txt { height: 54px; line-height: 1.5; color: #808080; overflow: hidden; display: block; margin-top: 10px; }
.tj_bar li { border-bottom: 1px solid #eee }
.tj_bar li:last-child { border: none }
.tj_bar li:last-child .book_intro { padding: 15px 0 2px }
.tj_bar .cover {
float: left;
display: block;
margin-right: 10px
}
.friend_link { display: none }
.footer { background: #fff; padding: 16px 0 20px }
.tj_bar .cover img {
width: 64px;
height: auto;
background: #f6f6f6
}
.tj_bar .book_intro {
padding: 15px 0;
clear: both;
word-break: break-all;
zoom: 1;
overflow: hidden
}
.tj_bar .dec {
width: 136px;
float: right
}
.tj_bar .book_intro .book_name {
display: block;
font-size: 14px;
line-height: 1;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden
}
.tj_bar .book_intro .txt {
height: 54px;
line-height: 1.5;
color: #808080;
overflow: hidden;
display: block;
margin-top: 10px;
}
.tj_bar li {
border-bottom: 1px solid #eee
}
.tj_bar li:last-child {
border: none
}
.tj_bar li:last-child .book_intro {
padding: 15px 0 2px
}
.friend_link {
display: none
}
.footer {
background: #fff;
padding: 16px 0 20px }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@
/*userinfo*/
.my_l { width:198px; float:left; font-size: 13px; padding-top: 20px; }
.my_l li a { display:block; height:42px; line-height:42px; padding-left:62px; border-left:4px solid #fff; background:url(../images/icon_user.png) no-repeat; margin-bottom:5px; color: #666 }
.my_l li .on { background-color:#fafafa; border-left:2px solid #f80; color:#000; border-radius: 0 2px 2px 0 }
.my_l li .on { background-color:#fafafa; border-left:2px solid #3eaf7c; color:#000; border-radius: 0 2px 2px 0 }
.my_l .link_1 { background-position:32px -188px }
.my_l .link_2 { background-position:32px -230px }
.my_l .link_3 { background-position:32px -272px }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -457,8 +457,8 @@ html #layuicss-layer {
}
.layui-layer-btn .layui-layer-btn0 {
border-color: #f70;
background-color: #f70;
border-color: #3eaf7c;
background-color: #3eaf7c;
color: #fff
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,92 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>帝霸</title>
<link rel="stylesheet" href="./layui/css/layui.css">
<style type="text/css">
.indexP p a{
color:#4c6978;
}
</style>
</head>
<body>
<div style="height: 50px;line-height: 50px;text-align: center" class="layui-header header header-doc layui-bg-cyan">
<div style="float: left;margin-left: 10px">
<a href="javascript:history.go(-1)">
<i style="font-size: 20px;color: #92B8B1;" class="layui-icon">&#xe65c;</i></a>
</div>
<b class="layui-icon">帝霸</b>
<div style="float: right;margin-right: 10px">
<i style="font-size: 20px;color: #92B8B1;" class="layui-icon">&#xe68e;</i>
</div>
</div>
<div class="layui-row" style="background: #f2f2f2">
<div style="padding: 10px" class="layui-col-xs4 layui-col-sm2 layui-col-md2 layui-col-lg2">
<img style=" width:auto; height:auto; max-width:100%; max-height:100%;" src="static/4868.jpg"/>
</div>
<div style="padding: 20px" class="layui-col-xs8 layui-col-sm8 layui-col-md8 layui-col-lg8">
<div style=";color: #4c6978;">作者:厌笔萧生</div>
<div style="margin-top: 5px;color: #4c6978;">类别:玄幻奇幻</div>
<div style="margin-top: 5px;color: #4c6978;">状态:连载</div>
<div style="margin-top: 5px;color: #4c6978;">更新:<i>2019-08-22</i></div>
<div style="margin-top: 5px;color: #4c6978;">评分:<i style="font-weight:bold;color: red">9.2分</i></div>
</div>
</div>
<div style="text-align: center;height: 60px;line-height: 60px">
<button type="button" class="layui-btn layui-btn-radius">开始阅读</button>
<button type="button" onclick="AddToFavorites()" class="layui-btn layui-btn-radius layui-btn-warm">加入收藏</button>
</div>
<p style="line-height: 23px;padding: 10px;text-indent: 25px;font-size: 14px;color: #4c6978;">
  万火儿莫名其妙的重生了,而且从堂堂的金丹修士,直接坠落尘埃,变成天赋极差的炼气期小透明。<br><br>  小透明无父无母小可怜,柔弱无骨真小白花。<br><br>  万火儿仰天长叹。<br><br>  天道你大爷!<br><br>  不过这一次不仅附赠随身空间,还另有极重承诺的天之骄子美貌未婚夫一枚。<br><br>  万火儿抚胸感叹:还好,还好。<br><br>  但是,除此之外,还附赠另一枚重生女!<br><br>  重生女杂灵根,蓦然醒转变为天之骄女,自此之后,丹药在她手,神兽就她有。人生处处是机缘,所到处处有福缘,更有无数美男前仆后继,后宫日益壮大。<br><br>  万火儿哀叹。<br><br>  不同命啊~<br><br>  什么?<br><br>  重生女抢她名额,找未婚夫揍她。<br><br>  什么?<br><br>  重生女抢她好友?让好友接着揍她。<br><br>  什么?<br><br>  重生女要将她未婚夫收后宫?<br><br>  抱歉,绝对不行!<br><br>  自此之后,柔弱小白花,踏上漫漫极品女盗之路。<br><br>  信奉宗旨,只要是重生女的机缘,那就抢抢抢。只要是重生女的桃花,那就破破破。<br><br>  什么?机缘本是她的?桃花也是她的?<br><br>  桃花就算了,机缘绝对不放过。<br><br>  敬请收看:妖孽无双女盗贼是如何装作可怜无助小白花,一路扮猪吃老虎,踏上漫漫修仙路的。
</p>
<div class="layui-collapse">
<div class="layui-colla-item" >
<h2 class="layui-colla-title">
<span>最新章节</span>
<span style="margin-left: 30px">
更新: <i>2019-08-22 12:56:09</i>
</span>
</h2>
<div class="layui-colla-content layui-show indexP">
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第345章 我在钓鱼</a></p>
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第344章 我在钓鱼</a></p>
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第343章 我在钓鱼</a></p>
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第342章 我在钓鱼</a></p>
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第341章 我在钓鱼</a></p>
<p style="height: 30px;line-height: 30px;padding: 10px"><a>第340章 我在钓鱼</a></p>
</div>
</div>
</div>
<div style="height: 42px;color:#4c6978;line-height: 42px;padding-left: 30px;background: #f2f2f2" >
查看完整目录
</div>
<div style="height: 60px;line-height: 60px;text-align: center" class="layui-footer footer footer-demo layui-bg-cyan">
<a style="font-size: 14px;color: #92B8B1;">首页</a>
<a style="font-size: 14px;color: #92B8B1;margin-left: 50px">阅读记录</a>
<div style="float: right"><a href="#top"><i class="layui-icon"
style="margin-right:15px;font-size: 30px;color:#92B8B1 ">&#xe604;</i></a>
</div>
</div>
</body>
<script src="./layui/layui.all.js"></script>
</html>

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