Merge pull request #131 from 201206030/develop_xxy

merge
This commit is contained in:
xxy 2024-05-28 09:55:50 +08:00 committed by GitHub
commit a4861996b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
96 changed files with 2564 additions and 1603 deletions

View File

@ -67,7 +67,7 @@ novel-plus -- 父工程
## 演示视频
https://www.bilibili.com/video/BV1Zo4y187Mi
https://www.bilibili.com/video/BV18e41197xs
## 增值服务

3
doc/sql/20240512.sql Normal file
View File

@ -0,0 +1,3 @@
update crawl_source
set crawl_rule = replace(crawl_rule, 'ibiquge.net', 'ibiquzw.org')
where id = 16;

View File

@ -1,5 +1,7 @@
CREATE database if NOT EXISTS `novel_plus` default character set utf8mb4 collate utf8mb4_unicode_ci;
use `novel_plus`;
CREATE
database if NOT EXISTS `novel_plus` default character set utf8mb4 collate utf8mb4_unicode_ci;
use
`novel_plus`;
SET NAMES utf8mb4;
@ -10,17 +12,19 @@ DROP TABLE IF EXISTS `author`;
CREATE TABLE `author`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`invite_code` varchar(20) DEFAULT NULL COMMENT '邀请码',
`pen_name` varchar(20) DEFAULT NULL COMMENT '笔名',
`tel_phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
`chat_account` varchar(50) DEFAULT NULL COMMENT 'QQ或微信账号',
`email` varchar(50) DEFAULT NULL COMMENT '电子邮箱',
`work_direction` tinyint(4) DEFAULT NULL COMMENT '作品方向0男频1女频',
`status` tinyint(4) DEFAULT '0' COMMENT '0正常1封禁',
`work_direction` tinyint(4) DEFAULT NULL COMMENT '作品方向0男频1女频',
`status` tinyint(4) DEFAULT '0' COMMENT '0正常1封禁',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='作者表';
) ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARSET = utf8mb4 COMMENT ='作者表';
-- ----------------------------
-- Records of author
@ -40,12 +44,14 @@ CREATE TABLE `author_code`
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`invite_code` varchar(100) DEFAULT NULL COMMENT '邀请码',
`validity_time` datetime DEFAULT NULL COMMENT '有效时间',
`is_use` tinyint(1) DEFAULT '0' COMMENT '是否使用过0未使用1:使用过',
`is_use` tinyint(1) DEFAULT '0' COMMENT '是否使用过0未使用1:使用过',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
PRIMARY KEY (`id`),
UNIQUE KEY `key_code` (`invite_code`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='作家邀请码表';
) ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARSET = utf8mb4 COMMENT ='作家邀请码表';
-- ----------------------------
-- Records of author_code
@ -63,36 +69,38 @@ VALUES ('5', 'ww34343', '2020-05-21 00:00:00', '0', '2020-05-13 14:18:58', '1');
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`work_direction` tinyint(1) DEFAULT NULL COMMENT '作品方向0男频1女频''',
`cat_id` int(11) DEFAULT NULL COMMENT '分类ID',
`cat_name` varchar(50) DEFAULT NULL COMMENT '分类名',
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`work_direction` tinyint(1) DEFAULT NULL COMMENT '作品方向0男频1女频''',
`cat_id` int(11) DEFAULT NULL COMMENT '分类ID',
`cat_name` varchar(50) DEFAULT NULL COMMENT '分类名',
`pic_url` varchar(200) NOT NULL COMMENT '小说封面',
`book_name` varchar(50) NOT NULL COMMENT '小说名',
`author_id` bigint(20) DEFAULT NULL COMMENT '作者id',
`author_id` bigint(20) DEFAULT NULL COMMENT '作者id',
`author_name` varchar(50) NOT NULL COMMENT '作者名',
`book_desc` varchar(2000) NOT NULL COMMENT '书籍描述',
`score` float NOT NULL COMMENT '评分预留字段',
`book_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '书籍状态0连载中1已完结',
`visit_count` bigint(20) DEFAULT '103' COMMENT '点击量',
`word_count` int(11) DEFAULT NULL COMMENT '总字数',
`comment_count` int(11) DEFAULT '0' COMMENT '评论数',
`last_index_id` bigint(20) DEFAULT NULL COMMENT '最新目录ID',
`last_index_name` varchar(50) DEFAULT NULL COMMENT '最新目录名',
`last_index_update_time` datetime DEFAULT NULL COMMENT '最新目录更新时间',
`is_vip` tinyint(1) DEFAULT '0' COMMENT '是否收费1收费0免费',
`status` tinyint(1) DEFAULT '0' COMMENT '状态0入库1上架',
`book_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '书籍状态0连载中1已完结',
`visit_count` bigint(20) DEFAULT '103' COMMENT '点击量',
`word_count` int(11) DEFAULT NULL COMMENT '总字数',
`comment_count` int(11) DEFAULT '0' COMMENT '评论数',
`last_index_id` bigint(20) DEFAULT NULL COMMENT '最新目录ID',
`last_index_name` varchar(50) DEFAULT NULL COMMENT '最新目录名',
`last_index_update_time` datetime DEFAULT NULL COMMENT '最新目录更新时间',
`is_vip` tinyint(1) DEFAULT '0' COMMENT '是否收费1收费0免费',
`status` tinyint(1) DEFAULT '0' COMMENT '状态0入库1上架',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`crawl_source_id` int(11) DEFAULT NULL COMMENT '爬虫源站ID',
`crawl_book_id` varchar(32) DEFAULT NULL COMMENT '抓取的源站小说ID',
`crawl_last_time` datetime DEFAULT NULL COMMENT '最后一次的抓取时间',
`crawl_is_stop` tinyint(1) DEFAULT '0' COMMENT '是否已停止更新0未停止1已停止',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`crawl_source_id` int(11) DEFAULT NULL COMMENT '爬虫源站ID',
`crawl_book_id` varchar(32) DEFAULT NULL COMMENT '抓取的源站小说ID',
`crawl_last_time` datetime DEFAULT NULL COMMENT '最后一次的抓取时间',
`crawl_is_stop` tinyint(1) DEFAULT '0' COMMENT '是否已停止更新0未停止1已停止',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_bookName_authorName` (`book_name`,`author_name`) USING BTREE,
KEY `key_lastIndexUpdateTime` (`last_index_update_time`) USING BTREE,
KEY `key_createTime` (`create_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1262260513468559361 DEFAULT CHARSET=utf8mb4 COMMENT='小说表';
UNIQUE KEY `key_uq_bookName_authorName` (`book_name`, `author_name`) USING BTREE,
KEY `key_lastIndexUpdateTime` (`last_index_update_time`) USING BTREE,
KEY `key_createTime` (`create_time`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1262260513468559361
DEFAULT CHARSET = utf8mb4 COMMENT ='小说表';
-- ----------------------------
-- Records of book
@ -110,14 +118,16 @@ CREATE TABLE `book_author`
`tel_phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
`chat_account` varchar(50) DEFAULT NULL COMMENT 'QQ或微信账号',
`email` varchar(50) DEFAULT NULL COMMENT '电子邮箱',
`work_direction` tinyint(4) DEFAULT NULL COMMENT '作品方向0男频1女频',
`status` tinyint(4) DEFAULT NULL COMMENT '0待审核1审核通过正常2审核不通过',
`work_direction` tinyint(4) DEFAULT NULL COMMENT '作品方向0男频1女频',
`status` tinyint(4) DEFAULT NULL COMMENT '0待审核1审核通过正常2审核不通过',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '申请人ID',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '申请人ID',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新人ID',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新人ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1254957873655066625 DEFAULT CHARSET=utf8mb4 COMMENT='作者表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1254957873655066625
DEFAULT CHARSET = utf8mb4 COMMENT ='作者表';
-- ----------------------------
-- Records of book_author
@ -129,16 +139,18 @@ CREATE TABLE `book_author`
DROP TABLE IF EXISTS `book_category`;
CREATE TABLE `book_category`
(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`work_direction` tinyint(1) DEFAULT NULL COMMENT '作品方向0男频1女频''',
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`work_direction` tinyint(1) DEFAULT NULL COMMENT '作品方向0男频1女频''',
`name` varchar(20) NOT NULL COMMENT '分类名',
`sort` tinyint(4) NOT NULL DEFAULT '10' COMMENT '排序',
`create_user_id` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user_id` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`sort` tinyint(4) NOT NULL DEFAULT '10' COMMENT '排序',
`create_user_id` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user_id` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='小说类别表';
) ENGINE = InnoDB
AUTO_INCREMENT = 8
DEFAULT CHARSET = utf8mb4 COMMENT ='小说类别表';
-- ----------------------------
-- Records of book_category
@ -165,15 +177,17 @@ DROP TABLE IF EXISTS `book_comment`;
CREATE TABLE `book_comment`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`book_id` bigint(20) DEFAULT NULL COMMENT '小说ID',
`book_id` bigint(20) DEFAULT NULL COMMENT '小说ID',
`comment_content` varchar(512) DEFAULT NULL COMMENT '评价内容',
`reply_count` int(11) DEFAULT '0' COMMENT '回复数量',
`audit_status` tinyint(1) DEFAULT '0' COMMENT '审核状态0待审核1审核通过2审核不通过',
`reply_count` int(11) DEFAULT '0' COMMENT '回复数量',
`audit_status` tinyint(1) DEFAULT '0' COMMENT '审核状态0待审核1审核通过2审核不通过',
`create_time` datetime DEFAULT NULL COMMENT '评价时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '评价人',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '评价人',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_bookid_userid` (`book_id`,`create_user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='小说评论表';
UNIQUE KEY `key_uq_bookid_userid` (`book_id`, `create_user_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 13
DEFAULT CHARSET = utf8mb4 COMMENT ='小说评论表';
-- ----------------------------
-- Records of book_comment
@ -190,13 +204,14 @@ DROP TABLE IF EXISTS `book_comment_reply`;
CREATE TABLE `book_comment_reply`
(
`id` bigint(20) NOT NULL COMMENT '主键',
`comment_id` bigint(20) DEFAULT NULL COMMENT '评论ID',
`comment_id` bigint(20) DEFAULT NULL COMMENT '评论ID',
`reply_content` varchar(512) DEFAULT NULL COMMENT '回复内容',
`audit_status` tinyint(1) DEFAULT '0' COMMENT '审核状态0待审核1审核通过2审核不通过',
`audit_status` tinyint(1) DEFAULT '0' COMMENT '审核状态0待审核1审核通过2审核不通过',
`create_time` datetime DEFAULT NULL COMMENT '回复用户ID',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '回复时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '回复时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小说评论回复表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='小说评论回复表';
-- ----------------------------
-- Records of book_comment_reply
@ -213,7 +228,9 @@ CREATE TABLE `book_content`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3347665 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 3347665
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Records of book_content
@ -227,17 +244,19 @@ CREATE TABLE `book_index`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`book_id` bigint(20) NOT NULL COMMENT '小说ID',
`index_num` int(11) NOT NULL COMMENT '目录号',
`index_num` int(11) NOT NULL COMMENT '目录号',
`index_name` varchar(100) DEFAULT NULL COMMENT '目录名',
`word_count` int(11) DEFAULT NULL COMMENT '字数',
`is_vip` tinyint(4) DEFAULT '0' COMMENT '是否收费1收费0免费',
`word_count` int(11) DEFAULT NULL COMMENT '字数',
`is_vip` tinyint(4) DEFAULT '0' COMMENT '是否收费1收费0免费',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_bookId_indexNum` (`book_id`,`index_num`) USING BTREE,
KEY `key_bookId` (`book_id`) USING BTREE,
KEY `key_indexNum` (`index_num`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1262260612777095169 DEFAULT CHARSET=utf8mb4 COMMENT='小说目录表';
UNIQUE KEY `key_uq_bookId_indexNum` (`book_id`, `index_num`) USING BTREE,
KEY `key_bookId` (`book_id`) USING BTREE,
KEY `key_indexNum` (`index_num`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1262260612777095169
DEFAULT CHARSET = utf8mb4 COMMENT ='小说目录表';
-- ----------------------------
-- Records of book_index
@ -249,13 +268,15 @@ CREATE TABLE `book_index`
DROP TABLE IF EXISTS `book_screen_bullet`;
CREATE TABLE `book_screen_bullet`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`content_id` bigint(20) NOT NULL COMMENT '小说内容ID',
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`content_id` bigint(20) NOT NULL COMMENT '小说内容ID',
`screen_bullet` varchar(512) NOT NULL COMMENT '小说弹幕内容',
`create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `key_contentId` (`content_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4 COMMENT='小说弹幕表';
KEY `key_contentId` (`content_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 79
DEFAULT CHARSET = utf8mb4 COMMENT ='小说弹幕表';
-- ----------------------------
-- Records of book_screen_bullet
@ -271,12 +292,14 @@ CREATE TABLE `book_setting`
`book_id` bigint(20) DEFAULT NULL COMMENT '小说ID',
`sort` tinyint(4) DEFAULT NULL COMMENT '排序号',
`type` tinyint(1) DEFAULT NULL COMMENT '类型0轮播图1顶部小说栏设置2本周强推3热门推荐4精品推荐',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新人ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8mb4 COMMENT='首页小说设置表';
) ENGINE = InnoDB
AUTO_INCREMENT = 64
DEFAULT CHARSET = utf8mb4 COMMENT ='首页小说设置表';
-- ----------------------------
-- Records of book_setting
@ -353,14 +376,15 @@ DROP TABLE IF EXISTS `crawl_batch_task`;
CREATE TABLE `crawl_batch_task`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`crawl_count_success` int(11) DEFAULT NULL COMMENT '成功抓取数量',
`crawl_count_target` int(11) DEFAULT NULL COMMENT '目标抓取数量',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`crawl_count_success` int(11) DEFAULT NULL COMMENT '成功抓取数量',
`crawl_count_target` int(11) DEFAULT NULL COMMENT '目标抓取数量',
`task_status` tinyint(1) DEFAULT '1' COMMENT '任务状态1正在运行0已停止',
`start_time` datetime DEFAULT NULL COMMENT '任务开始时间',
`end_time` datetime DEFAULT NULL COMMENT '任务结束时间',
`start_time` datetime DEFAULT NULL COMMENT '任务开始时间',
`end_time` datetime DEFAULT NULL COMMENT '任务结束时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='批量抓取任务表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='批量抓取任务表';
-- ----------------------------
-- Records of crawl_batch_task
@ -373,13 +397,14 @@ DROP TABLE IF EXISTS `crawl_single_task`;
CREATE TABLE `crawl_single_task`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`source_book_id` varchar(255) DEFAULT NULL COMMENT '源站小说ID',
`task_status` tinyint(1) DEFAULT NULL COMMENT '任务状态0失败1成功2未执行',
`exc_count` tinyint(2) DEFAULT '0' COMMENT '已经执行次数最多执行5次',
`task_status` tinyint(1) DEFAULT NULL COMMENT '任务状态0失败1成功2未执行',
`exc_count` tinyint(2) DEFAULT '0' COMMENT '已经执行次数最多执行5次',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抓取单本小说任务表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='抓取单本小说任务表';
-- ----------------------------
-- Records of crawl_single_task
@ -394,11 +419,13 @@ CREATE TABLE `crawl_source`
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`source_name` varchar(50) DEFAULT NULL COMMENT '源站名',
`crawl_rule` text COMMENT '爬取规则json串',
`source_status` tinyint(1) DEFAULT '0' COMMENT '爬虫源状态0关闭1开启',
`source_status` tinyint(1) DEFAULT '0' COMMENT '爬虫源状态0关闭1开启',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='爬虫源表';
) ENGINE = InnoDB
AUTO_INCREMENT = 5
DEFAULT CHARSET = utf8mb4 COMMENT ='爬虫源表';
-- ----------------------------
-- Records of crawl_source
@ -426,17 +453,19 @@ VALUES ('5', '笔趣阁',
DROP TABLE IF EXISTS `friend_link`;
CREATE TABLE `friend_link`
(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`link_name` varchar(50) NOT NULL COMMENT '链接名',
`link_url` varchar(100) NOT NULL COMMENT '链接url',
`sort` tinyint(4) NOT NULL DEFAULT '11' COMMENT '排序号',
`is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否开启0不开启1开启',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者用户id',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`sort` tinyint(4) NOT NULL DEFAULT '11' COMMENT '排序号',
`is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否开启0不开启1开启',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者用户id',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
) ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARSET = utf8mb4;
-- ----------------------------
-- Records of friend_link
@ -451,17 +480,19 @@ DROP TABLE IF EXISTS `news`;
CREATE TABLE `news`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`cat_id` int(11) DEFAULT NULL COMMENT '类别ID',
`cat_id` int(11) DEFAULT NULL COMMENT '类别ID',
`cat_name` varchar(50) DEFAULT NULL COMMENT '分类名',
`source_name` varchar(50) DEFAULT NULL COMMENT '来源',
`title` varchar(100) DEFAULT NULL COMMENT '标题',
`content` text COMMENT '内容',
`create_time` datetime DEFAULT NULL COMMENT '发布时间',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '发布人ID',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '发布人ID',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新人ID',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新人ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='新闻表';
) ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARSET = utf8mb4 COMMENT ='新闻表';
-- ----------------------------
-- Records of news
@ -481,15 +512,17 @@ VALUES ('2', '3', '资讯', '全媒派公众号', 'AI小说悄然流行人类
DROP TABLE IF EXISTS `news_category`;
CREATE TABLE `news_category`
(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '分类名',
`sort` tinyint(4) NOT NULL DEFAULT '10' COMMENT '排序',
`create_user_id` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user_id` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`sort` tinyint(4) NOT NULL DEFAULT '10' COMMENT '排序',
`create_user_id` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user_id` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='新闻类别表';
) ENGINE = InnoDB
AUTO_INCREMENT = 4
DEFAULT CHARSET = utf8mb4 COMMENT ='新闻类别表';
-- ----------------------------
-- Records of news_category
@ -507,15 +540,17 @@ CREATE TABLE `order_pay`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`out_trade_no` bigint(20) NOT NULL COMMENT '商户订单号',
`trade_no` varchar(64) DEFAULT NULL COMMENT '支付宝/微信交易号',
`trade_no` varchar(64) DEFAULT NULL COMMENT '支付宝/微信交易号',
`pay_channel` tinyint(1) NOT NULL DEFAULT '1' COMMENT '支付渠道1支付宝2微信',
`total_amount` int(11) NOT NULL COMMENT '交易金额(单位元)',
`total_amount` int(11) NOT NULL COMMENT '交易金额(单位元)',
`user_id` bigint(20) NOT NULL COMMENT '支付用户ID',
`pay_status` tinyint(1) DEFAULT '2' COMMENT '支付状态0支付失败1支付成功2待支付',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`pay_status` tinyint(1) DEFAULT '2' COMMENT '支付状态0支付失败1支付成功2待支付',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COMMENT='充值订单';
) ENGINE = InnoDB
AUTO_INCREMENT = 15
DEFAULT CHARSET = utf8mb4 COMMENT ='充值订单';
-- ----------------------------
-- Records of order_pay
@ -534,11 +569,13 @@ CREATE TABLE `sys_data_perm`
`crl_attr_name` varchar(50) DEFAULT NULL COMMENT '用户权限控制属性名',
`crl_column_name` varchar(50) DEFAULT NULL COMMENT '数据表权限控制列名',
`perm_code` varchar(50) DEFAULT NULL COMMENT '权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=216 DEFAULT CHARSET=utf8 COMMENT='数据权限管理';
) ENGINE = InnoDB
AUTO_INCREMENT = 216
DEFAULT CHARSET = utf8 COMMENT ='数据权限管理';
-- ----------------------------
-- Records of sys_data_perm
@ -563,12 +600,14 @@ DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept`
(
`dept_id` bigint(20) NOT NULL AUTO_INCREMENT,
`parent_id` bigint(20) DEFAULT NULL COMMENT '上级部门ID一级部门为0',
`parent_id` bigint(20) DEFAULT NULL COMMENT '上级部门ID一级部门为0',
`name` varchar(50) DEFAULT NULL COMMENT '部门名称',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`del_flag` tinyint(4) DEFAULT '0' COMMENT '是否删除 -1已删除 0正常',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`del_flag` tinyint(4) DEFAULT '0' COMMENT '是否删除 -1已删除 0正常',
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='部门管理';
) ENGINE = InnoDB
AUTO_INCREMENT = 17
DEFAULT CHARSET = utf8 COMMENT ='部门管理';
-- ----------------------------
-- Records of sys_dept
@ -594,18 +633,21 @@ CREATE TABLE `sys_dict`
`type` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '类型',
`description` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`sort` decimal(10, 0) DEFAULT NULL COMMENT '排序升序',
`parent_id` bigint(20) DEFAULT '0' COMMENT '父级编号',
`create_by` int(11) DEFAULT NULL COMMENT '创建者',
`parent_id` bigint(20) DEFAULT '0' COMMENT '父级编号',
`create_by` int(11) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '备注信息',
`del_flag` char(1) COLLATE utf8_bin DEFAULT '0' COMMENT '删除标记',
PRIMARY KEY (`id`),
KEY `sys_dict_value` (`value`),
KEY `sys_dict_label` (`name`),
KEY `sys_dict_del_flag` (`del_flag`)
) ENGINE=InnoDB AUTO_INCREMENT=142 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='字典表';
KEY `sys_dict_value` (`value`),
KEY `sys_dict_label` (`name`),
KEY `sys_dict_del_flag` (`del_flag`)
) ENGINE = InnoDB
AUTO_INCREMENT = 142
DEFAULT CHARSET = utf8
COLLATE = utf8_bin COMMENT ='字典表';
-- ----------------------------
-- Records of sys_dict
@ -878,11 +920,13 @@ DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`type` int(11) DEFAULT NULL COMMENT '文件类型',
`type` int(11) DEFAULT NULL COMMENT '文件类型',
`url` varchar(200) DEFAULT NULL COMMENT 'URL地址',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=183 DEFAULT CHARSET=utf8 COMMENT='文件上传';
) ENGINE = InnoDB
AUTO_INCREMENT = 183
DEFAULT CHARSET = utf8 COMMENT ='文件上传';
-- ----------------------------
-- Records of sys_file
@ -982,13 +1026,15 @@ CREATE TABLE `sys_gen_columns`
`column_type` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '列类型',
`java_type` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '映射java类型',
`column_comment` varchar(1024) CHARACTER SET utf8 DEFAULT '' COMMENT '列注释',
`column_sort` tinyint(4) DEFAULT NULL COMMENT '列排序升序',
`column_sort` tinyint(4) DEFAULT NULL COMMENT '列排序升序',
`column_label` varchar(64) DEFAULT NULL COMMENT '鍒楁爣绛惧悕',
`page_type` tinyint(4) DEFAULT '1' COMMENT '页面显示类型1文本框 2下拉框 3数值4日期 5文本域6富文本 7上传图片单文件 8上传图片多文件9上传文件单文件 10上传文件多文件11隐藏域 12不显示',
`is_required` tinyint(1) DEFAULT NULL COMMENT '是否必填',
`page_type` tinyint(4) DEFAULT '1' COMMENT '页面显示类型1文本框 2下拉框 3数值4日期 5文本域6富文本 7上传图片单文件 8上传图片多文件9上传文件单文件 10上传文件多文件11隐藏域 12不显示',
`is_required` tinyint(1) DEFAULT NULL COMMENT '是否必填',
`dict_type` varchar(100) CHARACTER SET utf8 DEFAULT '' COMMENT '页面显示为下拉时使用字典类型从字典表中取出',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=815 DEFAULT CHARSET=utf8mb4;
) ENGINE = InnoDB
AUTO_INCREMENT = 815
DEFAULT CHARSET = utf8mb4;
-- ----------------------------
-- Records of sys_gen_columns
@ -1157,26 +1203,27 @@ VALUES ('814', 'author_code', 'create_user_id', 'bigint', 'Long', '创建人ID',
DROP TABLE IF EXISTS `sys_gen_table`;
CREATE TABLE `sys_gen_table`
(
`id` bigint(20) NOT NULL COMMENT '主键',
`id` bigint(20) NOT NULL COMMENT '主键',
`table_name` varchar(64) NOT NULL COMMENT '表名',
`class_name` varchar(100) NOT NULL COMMENT '实体类名称',
`comments` varchar(500) NOT NULL COMMENT '表说明',
`category` tinyint(1) NOT NULL DEFAULT '0' COMMENT '分类0数据表1树表',
`package_name` varchar(500) DEFAULT NULL COMMENT '生成包路径',
`module_name` varchar(30) DEFAULT NULL COMMENT '生成模块名',
`sub_module_name` varchar(30) DEFAULT NULL COMMENT '生成子模块名',
`function_name` varchar(200) DEFAULT NULL COMMENT '生成功能名用于类描述',
`function_name_simple` varchar(50) DEFAULT NULL COMMENT '生成功能名简写用于功能提示保存xx成功',
`author` varchar(50) DEFAULT NULL COMMENT '生成功能作者',
`src_dir` varchar(1000) DEFAULT NULL COMMENT 'src目录',
`options` varchar(1000) DEFAULT NULL COMMENT '其它生成选项',
`create_by` bigint(20) NOT NULL COMMENT '创建者',
`category` tinyint(1) NOT NULL DEFAULT '0' COMMENT '分类0数据表1树表',
`package_name` varchar(500) DEFAULT NULL COMMENT '生成包路径',
`module_name` varchar(30) DEFAULT NULL COMMENT '生成模块名',
`sub_module_name` varchar(30) DEFAULT NULL COMMENT '生成子模块名',
`function_name` varchar(200) DEFAULT NULL COMMENT '生成功能名用于类描述',
`function_name_simple` varchar(50) DEFAULT NULL COMMENT '生成功能名简写用于功能提示保存xx成功',
`author` varchar(50) DEFAULT NULL COMMENT '生成功能作者',
`src_dir` varchar(1000) DEFAULT NULL COMMENT 'src目录',
`options` varchar(1000) DEFAULT NULL COMMENT '其它生成选项',
`create_by` bigint(20) NOT NULL COMMENT '创建者',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_by` bigint(20) NOT NULL COMMENT '更新者',
`update_by` bigint(20) NOT NULL COMMENT '更新者',
`update_date` datetime NOT NULL COMMENT '更新时间',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注信息',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注信息',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代码生成表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8 COMMENT ='代码生成表';
-- ----------------------------
-- Records of sys_gen_table
@ -1191,8 +1238,8 @@ VALUES ('1', '表名', '1', '1', '0', null, null, null, null, null, null, null,
DROP TABLE IF EXISTS `sys_gen_table_column`;
CREATE TABLE `sys_gen_table_column`
(
`id` bigint(20) NOT NULL COMMENT '主键',
`table_id` bigint(20) NOT NULL COMMENT '表id',
`id` bigint(20) NOT NULL COMMENT '主键',
`table_id` bigint(20) NOT NULL COMMENT '表id',
`column_name` varchar(64) NOT NULL COMMENT '列名',
`column_sort` decimal(10, 0) DEFAULT NULL COMMENT '列排序升序',
`column_type` varchar(100) NOT NULL COMMENT '类型',
@ -1211,8 +1258,9 @@ CREATE TABLE `sys_gen_table_column`
`show_type` varchar(200) DEFAULT NULL COMMENT '表单类型',
`options` varchar(1000) DEFAULT NULL COMMENT '其它生成选项',
PRIMARY KEY (`id`),
KEY `idx_gen_table_column_tn` (`table_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代码生成表列';
KEY `idx_gen_table_column_tn` (`table_id`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8 COMMENT ='代码生成表列';
-- ----------------------------
-- Records of sys_gen_table_column
@ -1225,16 +1273,18 @@ DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`username` varchar(50) DEFAULT NULL COMMENT '用户名',
`operation` varchar(50) DEFAULT NULL COMMENT '用户操作',
`time` int(11) DEFAULT NULL COMMENT '响应时间',
`time` int(11) DEFAULT NULL COMMENT '响应时间',
`method` varchar(200) DEFAULT NULL COMMENT '请求方法',
`params` varchar(5000) DEFAULT NULL COMMENT '请求参数',
`ip` varchar(64) DEFAULT NULL COMMENT 'IP地址',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1412 DEFAULT CHARSET=utf8 COMMENT='系统日志';
) ENGINE = InnoDB
AUTO_INCREMENT = 1412
DEFAULT CHARSET = utf8 COMMENT ='系统日志';
-- ----------------------------
@ -1244,17 +1294,19 @@ DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu`
(
`menu_id` bigint(20) NOT NULL AUTO_INCREMENT,
`parent_id` bigint(20) DEFAULT NULL COMMENT '父菜单ID一级菜单为0',
`parent_id` bigint(20) DEFAULT NULL COMMENT '父菜单ID一级菜单为0',
`name` varchar(50) DEFAULT NULL COMMENT '菜单名称',
`url` varchar(200) DEFAULT NULL COMMENT '菜单URL',
`perms` varchar(500) DEFAULT NULL COMMENT '授权(多个用逗号分隔user:list,user:create)',
`type` int(11) DEFAULT NULL COMMENT '类型 0目录 1菜单 2按钮',
`type` int(11) DEFAULT NULL COMMENT '类型 0目录 1菜单 2按钮',
`icon` varchar(50) DEFAULT NULL COMMENT '菜单图标',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`order_num` int(11) DEFAULT NULL COMMENT '排序',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=234 DEFAULT CHARSET=utf8 COMMENT='菜单管理';
) ENGINE = InnoDB
AUTO_INCREMENT = 234
DEFAULT CHARSET = utf8 COMMENT ='菜单管理';
-- ----------------------------
-- Records of sys_menu
@ -1400,11 +1452,13 @@ CREATE TABLE `sys_role`
`role_name` varchar(100) DEFAULT NULL COMMENT '角色名称',
`role_sign` varchar(100) DEFAULT NULL COMMENT '角色标识',
`remark` varchar(100) DEFAULT NULL COMMENT '备注',
`user_id_create` bigint(20) DEFAULT NULL COMMENT '创建用户id',
`user_id_create` bigint(20) DEFAULT NULL COMMENT '创建用户id',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8 COMMENT='角色';
) ENGINE = InnoDB
AUTO_INCREMENT = 62
DEFAULT CHARSET = utf8 COMMENT ='角色';
-- ----------------------------
-- Records of sys_role
@ -1422,7 +1476,9 @@ CREATE TABLE `sys_role_data_perm`
`role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
`perm_id` bigint(20) DEFAULT NULL COMMENT '权限ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='角色与数据权限对应关系';
) ENGINE = InnoDB
AUTO_INCREMENT = 79
DEFAULT CHARSET = utf8 COMMENT ='角色与数据权限对应关系';
-- ----------------------------
-- Records of sys_role_data_perm
@ -1460,7 +1516,9 @@ CREATE TABLE `sys_role_menu`
`role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
`menu_id` bigint(20) DEFAULT NULL COMMENT '菜单ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4830 DEFAULT CHARSET=utf8 COMMENT='角色与菜单对应关系';
) ENGINE = InnoDB
AUTO_INCREMENT = 4830
DEFAULT CHARSET = utf8 COMMENT ='角色与菜单对应关系';
-- ----------------------------
-- Records of sys_role_menu
@ -2226,23 +2284,25 @@ CREATE TABLE `sys_user`
`username` varchar(50) DEFAULT NULL COMMENT '用户名',
`name` varchar(100) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL COMMENT '密码',
`dept_id` bigint(20) DEFAULT NULL,
`dept_id` bigint(20) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`mobile` varchar(100) DEFAULT NULL COMMENT '手机号',
`status` tinyint(4) DEFAULT NULL COMMENT '状态 0:禁用1:正常',
`user_id_create` bigint(20) DEFAULT NULL COMMENT '创建用户id',
`status` tinyint(4) DEFAULT NULL COMMENT '状态 0:禁用1:正常',
`user_id_create` bigint(20) DEFAULT NULL COMMENT '创建用户id',
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
`sex` bigint(20) DEFAULT NULL COMMENT '性别',
`sex` bigint(20) DEFAULT NULL COMMENT '性别',
`birth` datetime DEFAULT NULL COMMENT '出身日期',
`pic_id` bigint(20) DEFAULT NULL,
`pic_id` bigint(20) DEFAULT NULL,
`live_address` varchar(500) DEFAULT NULL COMMENT '现居住地',
`hobby` varchar(255) DEFAULT NULL COMMENT '爱好',
`province` varchar(255) DEFAULT NULL COMMENT '省份',
`city` varchar(255) DEFAULT NULL COMMENT '所在城市',
`district` varchar(255) DEFAULT NULL COMMENT '所在地区',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=139 DEFAULT CHARSET=utf8;
) ENGINE = InnoDB
AUTO_INCREMENT = 139
DEFAULT CHARSET = utf8;
-- ----------------------------
-- Records of sys_user
@ -2262,7 +2322,9 @@ CREATE TABLE `sys_user_role`
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系';
) ENGINE = InnoDB
AUTO_INCREMENT = 137
DEFAULT CHARSET = utf8 COMMENT ='用户与角色对应关系';
-- ----------------------------
-- Records of sys_user_role
@ -2342,19 +2404,21 @@ VALUES ('136', '138', '60');
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(50) NOT NULL COMMENT '登录名',
`password` varchar(100) NOT NULL COMMENT '登录密码',
`nick_name` varchar(50) DEFAULT NULL COMMENT '昵称',
`user_photo` varchar(100) DEFAULT NULL COMMENT '用户头像',
`user_sex` tinyint(1) DEFAULT NULL COMMENT '用户性别01',
`account_balance` bigint(20) NOT NULL DEFAULT '0' COMMENT '账户余额',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '用户状态0正常',
`nick_name` varchar(50) DEFAULT NULL COMMENT '昵称',
`user_photo` varchar(100) DEFAULT NULL COMMENT '用户头像',
`user_sex` tinyint(1) DEFAULT NULL COMMENT '用户性别01',
`account_balance` bigint(20) NOT NULL DEFAULT '0' COMMENT '账户余额',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '用户状态0正常',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1255664783722586113 DEFAULT CHARSET=utf8mb4;
) ENGINE = InnoDB
AUTO_INCREMENT = 1255664783722586113
DEFAULT CHARSET = utf8mb4;
-- ----------------------------
-- Records of user
@ -2391,11 +2455,13 @@ CREATE TABLE `user_bookshelf`
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`book_id` bigint(20) NOT NULL COMMENT '小说ID',
`pre_content_id` bigint(20) DEFAULT NULL COMMENT '上一次阅读的章节内容表ID',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_userid_bookid` (`user_id`,`book_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COMMENT='用户书架表';
UNIQUE KEY `key_uq_userid_bookid` (`user_id`, `book_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 42
DEFAULT CHARSET = utf8mb4 COMMENT ='用户书架表';
-- ----------------------------
-- Records of user_bookshelf
@ -2420,15 +2486,17 @@ CREATE TABLE `user_buy_record`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`book_id` bigint(20) DEFAULT NULL COMMENT '购买的小说ID',
`book_id` bigint(20) DEFAULT NULL COMMENT '购买的小说ID',
`book_name` varchar(50) DEFAULT NULL COMMENT '购买的小说名',
`book_index_id` bigint(20) DEFAULT NULL COMMENT '购买的章节ID',
`book_index_id` bigint(20) DEFAULT NULL COMMENT '购买的章节ID',
`book_index_name` varchar(100) DEFAULT NULL COMMENT '购买的章节名',
`buy_amount` int(11) DEFAULT NULL COMMENT '购买使用的屋币数量',
`buy_amount` int(11) DEFAULT NULL COMMENT '购买使用的屋币数量',
`create_time` datetime DEFAULT NULL COMMENT '购买时间',
PRIMARY KEY (`id`),
UNIQUE KEY `key_userId_indexId` (`user_id`,`book_index_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='用户消费记录表';
UNIQUE KEY `key_userId_indexId` (`user_id`, `book_index_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARSET = utf8mb4 COMMENT ='用户消费记录表';
-- ----------------------------
-- Records of user_buy_record
@ -2447,11 +2515,13 @@ DROP TABLE IF EXISTS `user_feedback`;
CREATE TABLE `user_feedback`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`content` varchar(512) DEFAULT NULL COMMENT '反馈内容',
`create_time` datetime DEFAULT NULL COMMENT '反馈时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
) ENGINE = InnoDB
AUTO_INCREMENT = 9
DEFAULT CHARSET = utf8mb4;
-- ----------------------------
-- Records of user_feedback
@ -2469,11 +2539,13 @@ CREATE TABLE `user_read_history`
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`book_id` bigint(20) NOT NULL COMMENT '小说ID',
`pre_content_id` bigint(20) DEFAULT NULL COMMENT '上一次阅读的章节内容表ID',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_userid_bookid` (`user_id`,`book_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8mb4 COMMENT='用户阅读记录表';
UNIQUE KEY `key_uq_userid_bookid` (`user_id`, `book_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 119
DEFAULT CHARSET = utf8mb4 COMMENT ='用户阅读记录表';
-- ----------------------------
-- Records of user_read_history
@ -2539,7 +2611,9 @@ CREATE TABLE `book_content0`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1155 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1155
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content1
@ -2552,7 +2626,9 @@ CREATE TABLE `book_content1`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=406 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 406
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content2
@ -2565,7 +2641,9 @@ CREATE TABLE `book_content2`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1222 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1222
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content3
@ -2578,7 +2656,9 @@ CREATE TABLE `book_content3`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=410 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 410
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content4
@ -2591,7 +2671,9 @@ CREATE TABLE `book_content4`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1188 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1188
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content5
@ -2604,7 +2686,9 @@ CREATE TABLE `book_content5`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 416
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content6
@ -2617,7 +2701,9 @@ CREATE TABLE `book_content6`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1180 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1180
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content7
@ -2630,7 +2716,9 @@ CREATE TABLE `book_content7`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=404 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 404
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content8
@ -2643,7 +2731,9 @@ CREATE TABLE `book_content8`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1134 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 1134
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
-- ----------------------------
-- Table structure for book_content9
@ -2656,24 +2746,28 @@ CREATE TABLE `book_content9`
`content` mediumtext COMMENT '小说章节内容',
PRIMARY KEY (`id`),
UNIQUE KEY `key_uq_indexId` (`index_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=415 DEFAULT CHARSET=utf8mb4 COMMENT='小说内容表';
) ENGINE = InnoDB
AUTO_INCREMENT = 415
DEFAULT CHARSET = utf8mb4 COMMENT ='小说内容表';
DROP TABLE IF EXISTS `crawl_single_task`;
CREATE TABLE `crawl_single_task`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`source_id` int(11) DEFAULT NULL COMMENT '爬虫源ID',
`source_name` varchar(50) DEFAULT NULL COMMENT '爬虫源名',
`source_book_id` varchar(255) DEFAULT NULL COMMENT '源站小说ID',
`cat_id` int(11) DEFAULT NULL COMMENT '分类ID',
`cat_id` int(11) DEFAULT NULL COMMENT '分类ID',
`book_name` varchar(50) DEFAULT NULL COMMENT '爬取的小说名',
`author_name` varchar(50) DEFAULT NULL COMMENT '爬取的小说作者名',
`task_status` tinyint(1) DEFAULT '2' COMMENT '任务状态0失败1成功2未执行',
`exc_count` tinyint(2) DEFAULT '0' COMMENT '已经执行次数最多执行5次',
`task_status` tinyint(1) DEFAULT '2' COMMENT '任务状态0失败1成功2未执行',
`exc_count` tinyint(2) DEFAULT '0' COMMENT '已经执行次数最多执行5次',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='抓取单本小说任务表';
) ENGINE = InnoDB
AUTO_INCREMENT = 8
DEFAULT CHARSET = utf8mb4 COMMENT ='抓取单本小说任务表';
-- ----------------------------
-- Records of crawl_single_task
@ -2697,13 +2791,14 @@ CREATE TABLE `author_income_detail`
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`author_id` bigint(20) NOT NULL COMMENT '作家ID',
`book_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '作品ID,0表示全部作品',
`income_date` date NOT NULL COMMENT '收入日期',
`income_account` int(11) NOT NULL DEFAULT '0' COMMENT '订阅总额',
`income_count` int(11) NOT NULL DEFAULT '0' COMMENT '订阅次数',
`income_number` int(11) NOT NULL DEFAULT '0' COMMENT '订阅人数',
`create_time` datetime DEFAULT NULL,
`income_date` date NOT NULL COMMENT '收入日期',
`income_account` int(11) NOT NULL DEFAULT '0' COMMENT '订阅总额',
`income_count` int(11) NOT NULL DEFAULT '0' COMMENT '订阅次数',
`income_number` int(11) NOT NULL DEFAULT '0' COMMENT '订阅人数',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稿费收入明细统计表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='稿费收入明细统计表';
CREATE TABLE `author_income`
(
@ -2711,15 +2806,16 @@ CREATE TABLE `author_income`
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`author_id` bigint(20) NOT NULL COMMENT '作家ID',
`book_id` bigint(20) NOT NULL COMMENT '作品ID',
`income_month` date NOT NULL COMMENT '收入月份',
`income_month` date NOT NULL COMMENT '收入月份',
`pre_tax_income` bigint(20) NOT NULL DEFAULT '0' COMMENT '税前收入',
`after_tax_income` bigint(20) NOT NULL DEFAULT '0' COMMENT '税后收入',
`pay_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '支付状态0待支付1已支付',
`confirm_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '稿费确认状态0待确认1已确认',
`detail` varchar(255) DEFAULT NULL COMMENT '详情',
`create_time` datetime DEFAULT NULL,
`detail` varchar(255) DEFAULT NULL COMMENT '详情',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稿费收入统计表';
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='稿费收入统计表';
alter table book
@ -2819,7 +2915,7 @@ alter table book_index
CREATE TABLE `website_info`
(
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
name varchar(50) NOT NULL COMMENT '网站名',
domain varchar(50) NOT NULL COMMENT '网站域名',
keyword varchar(50) NOT NULL COMMENT 'SEO关键词',
@ -2827,10 +2923,10 @@ CREATE TABLE `website_info`
qq varchar(20) NOT NULL COMMENT '站长QQ',
logo varchar(200) NOT NULL COMMENT '网站logo图片默认',
logo_dark varchar(200) NOT NULL COMMENT '网站logo图片深色',
create_time datetime null comment '创建时间',
create_user_id bigint null comment '创建人ID',
update_time datetime null comment '更新时间',
update_user_id bigint null comment '更新人ID',
create_time datetime null comment '创建时间',
create_user_id bigint null comment '创建人ID',
update_time datetime null comment '更新时间',
update_user_id bigint null comment '更新人ID',
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='网站信息表';
@ -2998,4 +3094,15 @@ 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;
update crawl_source
set crawl_rule = replace(crawl_rule, 'ibiquge.net', 'ibiquzw.org')
where id = 16;
update website_info
set logo = '/images/logo.png',
logo_dark='/images/logo.png'
where id = 1;

View File

@ -5,7 +5,7 @@
<groupId>com.java2nb</groupId>
<artifactId>novel-admin</artifactId>
<version>4.3.0-RC1</version>
<version>4.3.0</version>
<packaging>jar</packaging>
<name>novel-admin</name>

View File

@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -83,7 +84,7 @@ public class FriendLinkController {
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("novel:friendLink:add")
public R save(FriendLinkDO friendLink) {
public R save(@Validated FriendLinkDO friendLink) {
if (friendLinkService.save(friendLink) > 0) {
redisTemplate.delete(CacheKey.INDEX_LINK_KEY);
return R.ok();
@ -98,7 +99,7 @@ public class FriendLinkController {
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("novel:friendLink:edit")
public R update(FriendLinkDO friendLink) {
public R update(@Validated FriendLinkDO friendLink) {
friendLinkService.update(friendLink);
redisTemplate.delete(CacheKey.INDEX_LINK_KEY);
return R.ok();

View File

@ -1,163 +1,175 @@
package com.java2nb.novel.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.hibernate.validator.constraints.URL;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2023-04-14 15:12:25
*/
public class FriendLinkDO implements Serializable {
private static final long serialVersionUID = 1L;
//主键
private Integer id;
//链接名
private String linkName;
//链接url
private String linkUrl;
//排序号
private Integer sort;
//是否开启0不开启1开启
private Integer isOpen;
//创建人id
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long createUserId;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//更新者用户id
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long updateUserId;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private static final long serialVersionUID = 1L;
/**
* 设置主键
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取主键
*/
public Integer getId() {
return id;
}
/**
* 设置链接名
*/
public void setLinkName(String linkName) {
this.linkName = linkName;
}
/**
* 获取链接名
*/
public String getLinkName() {
return linkName;
}
/**
* 设置链接url
*/
public void setLinkUrl(String linkUrl) {
this.linkUrl = linkUrl;
}
/**
* 获取链接url
*/
public String getLinkUrl() {
return linkUrl;
}
/**
* 设置排序号
*/
public void setSort(Integer sort) {
this.sort = sort;
}
/**
* 获取排序号
*/
public Integer getSort() {
return sort;
}
/**
* 设置是否开启0不开启1开启
*/
public void setIsOpen(Integer isOpen) {
this.isOpen = isOpen;
}
/**
* 获取是否开启0不开启1开启
*/
public Integer getIsOpen() {
return isOpen;
}
/**
* 设置创建人id
*/
public void setCreateUserId(Long createUserId) {
this.createUserId = createUserId;
}
/**
* 获取创建人id
*/
public Long getCreateUserId() {
return createUserId;
}
/**
* 设置创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置更新者用户id
*/
public void setUpdateUserId(Long updateUserId) {
this.updateUserId = updateUserId;
}
/**
* 获取更新者用户id
*/
public Long getUpdateUserId() {
return updateUserId;
}
/**
* 设置更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
//主键
private Integer id;
//链接名
private String linkName;
//链接url
@URL
private String linkUrl;
//排序号
private Integer sort;
//是否开启0不开启1开启
private Integer isOpen;
//创建人id
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long createUserId;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//更新者用户id
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long updateUserId;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* 设置主键
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取主键
*/
public Integer getId() {
return id;
}
/**
* 设置链接名
*/
public void setLinkName(String linkName) {
this.linkName = linkName;
}
/**
* 获取链接名
*/
public String getLinkName() {
return linkName;
}
/**
* 设置链接url
*/
public void setLinkUrl(String linkUrl) {
this.linkUrl = linkUrl;
}
/**
* 获取链接url
*/
public String getLinkUrl() {
return linkUrl;
}
/**
* 设置排序号
*/
public void setSort(Integer sort) {
this.sort = sort;
}
/**
* 获取排序号
*/
public Integer getSort() {
return sort;
}
/**
* 设置是否开启0不开启1开启
*/
public void setIsOpen(Integer isOpen) {
this.isOpen = isOpen;
}
/**
* 获取是否开启0不开启1开启
*/
public Integer getIsOpen() {
return isOpen;
}
/**
* 设置创建人id
*/
public void setCreateUserId(Long createUserId) {
this.createUserId = createUserId;
}
/**
* 获取创建人id
*/
public Long getCreateUserId() {
return createUserId;
}
/**
* 设置创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置更新者用户id
*/
public void setUpdateUserId(Long updateUserId) {
this.updateUserId = updateUserId;
}
/**
* 获取更新者用户id
*/
public Long getUpdateUserId() {
return updateUserId;
}
/**
* 设置更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}

View File

@ -18,11 +18,12 @@ spring:
profiles:
active: dev
#上传文件的最大值10M
#上传文件的最大值100M
servlet:
multipart:
max-file-size: 10485760
max-file-size: 100MB
max-request-size: 100MB
devtools:
restart:
enabled: true

View File

@ -23,7 +23,7 @@
<div class="col-sm-8">
<input id="linkUrl" name="linkUrl"
class="form-control"
type="text" required>
type="url" required>
</div>
</div>

View File

@ -26,7 +26,7 @@
<input id="linkUrl" name="linkUrl"
th:value="${friendLink.linkUrl}"
class="form-control"
type="text" required>
type="url" required>
</div>
</div>
<div class="form-group">

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>novel</artifactId>
<groupId>com.java2nb</groupId>
<version>4.3.0-RC1</version>
<version>4.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -14,43 +14,48 @@ public class User {
private Long id;
@NotBlank(groups = {AddGroup.class},message="手机号不能为空!")
@Pattern(groups = {AddGroup.class},regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
@NotBlank(groups = {AddGroup.class}, message = "手机号不能为空!")
@Pattern(groups = {AddGroup.class}, regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号格式不正确!")
@Null(groups = {UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private String username;
@NotBlank(groups = {AddGroup.class},message="密码不能为空!")
@NotBlank(groups = {AddGroup.class}, message = "密码不能为空!")
@Null(groups = {UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private String password;
@Null(groups = {AddGroup.class})
@Pattern(groups = {
UpdateGroup.class}, regexp = "[\u4E00-\u9FA5A-Za-z0-9_]{1,11}", message = "昵称格式不正确!")
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private String nickName;
@Null(groups = {AddGroup.class})
@Pattern(groups = {
UpdateGroup.class}, regexp = "^/localPic/\\d{4}/\\d{2}/\\d{2}/[A-Za-z0-9]+\\.(jpg|jpeg|swf|gif|png|JPG|JPEG|SWF|GIF|PNG)$", message = "只能上传图片格式的文件!")
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private String userPhoto;
@Null(groups = {AddGroup.class})
@Min(value = 0,groups = {UpdateGroup.class})
@Max(value = 1,groups = {UpdateGroup.class})
@Min(value = 0, groups = {UpdateGroup.class})
@Max(value = 1, groups = {UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Byte userSex;
@Null(groups = {AddGroup.class,UpdateGroup.class})
@Null(groups = {AddGroup.class, UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Long accountBalance;
@Null(groups = {AddGroup.class,UpdateGroup.class})
@Null(groups = {AddGroup.class, UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Byte status;
@Null(groups = {AddGroup.class,UpdateGroup.class})
@Null(groups = {AddGroup.class, UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Date createTime;
@Null(groups = {AddGroup.class,UpdateGroup.class})
@Null(groups = {AddGroup.class, UpdateGroup.class})
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Date updateTime;

View File

@ -11,10 +11,11 @@ spring:
generator:
write-numbers-as-strings: true
#上传文件的最大值1M
#上传文件的最大值100M
servlet:
multipart:
max-file-size: 1048576
max-file-size: 100MB
max-request-size: 100MB
mybatis:
configuration:

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>novel</artifactId>
<groupId>com.java2nb</groupId>
<version>4.3.0-RC1</version>
<version>4.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -331,7 +331,7 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
}
.logo {
width: 198px;
width: 160px;
float: left;
padding: 23px 130px 0 0;
display: block

View File

@ -6,9 +6,8 @@
<meta name="description" content="">
<meta name="author" content="">
<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"/>
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
<link href="/css/signin.css" rel="stylesheet"/>
<style>
.btn-primary {
color: #fff;

View File

@ -34,7 +34,7 @@ pic:
#模版配置
templates:
name: orange
name: green
#小说内容保存配置
content:

View File

@ -51,7 +51,7 @@ public class PayController extends BaseController {
UserDetails userDetails = getUserDetails(request);
if (userDetails == null) {
//未登录跳转到登陆页面
httpResponse.sendRedirect("/user/login.html?originUrl=/pay/aliPay?payAmount=" + payAmount);
httpResponse.sendRedirect("/user/login.html?originUrl=/pay/index.html");
} else {
//创建充值订单
Long outTradeNo = orderService.createPayOrder((byte) 1, payAmount, userDetails.getId());
@ -121,7 +121,7 @@ public class PayController extends BaseController {
PrintWriter out = httpResponse.getWriter();
//获取支付宝POST过来反馈信息
//获取支付宝POST过来信息
Map<String, String> params = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
for (String name : requestParams.keySet()) {
@ -134,18 +134,10 @@ public class PayController extends BaseController {
params.put(name, valueStr);
}
//调用SDK验证签名
//验证签名
boolean signVerified = AlipaySignature.rsaCheckV1(params, alipayConfig.getPublicKey(),
alipayConfig.getCharset(), alipayConfig.getSignType());
//请在这里编写您的程序以下代码仅作参考
/* 实际验证过程建议商户务必添加以下校验
1需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号
2判断total_amount是否确实为该订单的实际金额即商户订单创建时的金额
3校验通知中的seller_id或者seller_email) 是否为out_trade_no这笔单据的对应的操作方有的时候一个商户可能有多个seller_id/seller_email
4验证app_id是否为该商户本身
*/
if (signVerified) {
//验证成功
//商户订单号
@ -160,21 +152,18 @@ public class PayController extends BaseController {
String tradeStatus = new String(request.getParameter("trade_status").getBytes(StandardCharsets.ISO_8859_1),
StandardCharsets.UTF_8);
//更新订单状态
orderService.updatePayOrder(Long.parseLong(outTradeNo), tradeNo, tradeStatus);
if ("TRADE_SUCCESS".equals(tradeStatus)) {
//支付成功
orderService.updatePayOrder(Long.parseLong(outTradeNo), tradeNo, 1);
}
out.println("success");
} else {//验证失败
out.println("fail");
//调试用写文本函数记录程序运行情况是否正常
//String sWord = AlipaySignature.getSignCheckContentV1(params);
//AlipayConfig.logResult(sWord);
}
}
}

View File

@ -0,0 +1,15 @@
package com.java2nb.novel.mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author Administrator
*/
public interface FrontUserMapper extends UserMapper {
void addUserBalance(@Param("userId") Long userId, @Param("amount") Integer amount);
}

View File

@ -1,7 +1,6 @@
package com.java2nb.novel.service;
/**
* @author 11797
*/
@ -12,18 +11,19 @@ public interface OrderService {
* 创建充值订单
*
* @param payChannel 支付渠道
* @param payAmount 支付金额
* @param userId 用户ID
* @param payAmount 支付金额
* @param userId 用户ID
* @return 商户订单号
* */
*/
Long createPayOrder(Byte payChannel, Integer payAmount, Long userId);
/**
* 更新订单状态
*
* @param outTradeNo 商户订单号
* @param tradeNo 支付宝/微信 订单号
* @param tradeStatus 支付状态
* */
void updatePayOrder(Long outTradeNo, String tradeNo, String tradeStatus);
* @param tradeNo 支付宝/微信 订单号
* @param payStatus 支付状态
*/
void updatePayOrder(Long outTradeNo, String tradeNo, int payStatus);
}

View File

@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -17,6 +18,7 @@ import java.util.Date;
import java.util.Random;
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
import static org.mybatis.dynamic.sql.SqlBuilder.update;
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
/**
@ -35,7 +37,8 @@ public class OrderServiceImpl implements OrderService {
@Override
public Long createPayOrder(Byte payChannel, Integer payAmount, Long userId) {
Date currentDate = new Date();
Long outTradeNo = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(currentDate)+new Random().nextInt(10));
Long outTradeNo = Long.parseLong(
new SimpleDateFormat("yyyyMMddHHmmssSSS").format(currentDate) + new Random().nextInt(10));
OrderPay orderPay = new OrderPay();
orderPay.setOutTradeNo(outTradeNo);
orderPay.setPayChannel(payChannel);
@ -49,37 +52,39 @@ public class OrderServiceImpl implements OrderService {
@Transactional(rollbackFor = Exception.class)
@Override
public void updatePayOrder(Long outTradeNo, String tradeNo, String tradeStatus) {
SelectStatementProvider selectStatement = select(OrderPayDynamicSqlSupport.id,OrderPayDynamicSqlSupport.payStatus,OrderPayDynamicSqlSupport.totalAmount,OrderPayDynamicSqlSupport.userId)
.from(OrderPayDynamicSqlSupport.orderPay)
.where(OrderPayDynamicSqlSupport.outTradeNo, isEqualTo(outTradeNo))
.build()
.render(RenderingStrategies.MYBATIS3);
public void updatePayOrder(Long outTradeNo, String tradeNo, int payStatus) {
SelectStatementProvider selectStatement = select(OrderPayDynamicSqlSupport.id,
OrderPayDynamicSqlSupport.payStatus, OrderPayDynamicSqlSupport.totalAmount,
OrderPayDynamicSqlSupport.userId)
.from(OrderPayDynamicSqlSupport.orderPay)
.where(OrderPayDynamicSqlSupport.outTradeNo, isEqualTo(outTradeNo))
.build()
.render(RenderingStrategies.MYBATIS3);
OrderPay orderPay = orderPayMapper.selectMany(selectStatement).get(0);
OrderPay orderPay = orderPayMapper.selectOne(selectStatement).orElse(null);
if(orderPay.getPayStatus()!=1) {
//此订单还未处理过
if (tradeStatus.equals("TRADE_SUCCESS") || tradeStatus.equals("TRADE_FINISHED")) {
if (orderPay.getPayStatus().intValue() == 2) {
//待支付订单处理
if (payStatus == 1) {
//支付成功
//1.更新订单状态为成功
orderPay.setPayStatus((byte) 1);
orderPay.setUpdateTime(new Date());
orderPayMapper.updateByPrimaryKeySelective(orderPay);
//2.增加用户余额
userService.addAmount(orderPay.getUserId(),orderPay.getTotalAmount()*100);
UpdateStatementProvider updateStatement = update(OrderPayDynamicSqlSupport.orderPay)
.set(OrderPayDynamicSqlSupport.tradeNo).equalTo(tradeNo)
.set(OrderPayDynamicSqlSupport.payStatus).equalTo((byte) 1)
.set(OrderPayDynamicSqlSupport.updateTime).equalTo(new Date())
.where(OrderPayDynamicSqlSupport.id, isEqualTo(orderPay.getId()))
.and(OrderPayDynamicSqlSupport.payStatus, isEqualTo((byte) 2))
.build()
.render(RenderingStrategies.MYBATIS3);
int updateRow = orderPayMapper.update(updateStatement);
if (updateRow > 0) {
//更新成功
//2.增加用户余额
userService.addAmount(orderPay.getUserId(), orderPay.getTotalAmount() * 100);
}
}
}
}
}

View File

@ -1,20 +1,20 @@
package com.java2nb.novel.service.impl;
import com.github.pagehelper.PageHelper;
import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.entity.User;
import com.java2nb.novel.service.UserService;
import com.java2nb.novel.core.enums.ResponseStatus;
import com.java2nb.novel.entity.User;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.mapper.*;
import com.java2nb.novel.service.UserService;
import com.java2nb.novel.vo.BookReadHistoryVO;
import com.java2nb.novel.vo.BookShelfVO;
import com.java2nb.novel.vo.UserFeedbackVO;
import io.github.xxyopen.model.page.PageBean;
import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
import io.github.xxyopen.util.IdWorker;
import io.github.xxyopen.util.MD5Util;
import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.mapper.*;
import com.java2nb.novel.vo.BookReadHistoryVO;
import com.java2nb.novel.vo.BookShelfVO;
import com.java2nb.novel.vo.UserFeedbackVO;
import io.github.xxyopen.web.util.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -46,7 +46,7 @@ import static org.mybatis.dynamic.sql.select.SelectDSL.select;
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
private final FrontUserMapper userMapper;
private final FrontUserBookshelfMapper userBookshelfMapper;
@ -63,17 +63,17 @@ public class UserServiceImpl implements UserService {
public UserDetails register(User user) {
//查询用户名是否已注册
SelectStatementProvider selectStatement = select(count(id))
.from(UserDynamicSqlSupport.user)
.where(username, isEqualTo(user.getUsername()))
.build()
.render(RenderingStrategies.MYBATIS3);
.from(UserDynamicSqlSupport.user)
.where(username, isEqualTo(user.getUsername()))
.build()
.render(RenderingStrategies.MYBATIS3);
long count = userMapper.count(selectStatement);
if (count > 0) {
//用户名已注册
throw new BusinessException(ResponseStatus.USERNAME_EXIST);
}
User entity = new User();
BeanUtils.copyProperties(user,entity);
BeanUtils.copyProperties(user, entity);
//数据库生成注册记录
Long id = idWorker.nextId();
entity.setId(id);
@ -94,12 +94,12 @@ public class UserServiceImpl implements UserService {
@Override
public UserDetails login(User user) {
//根据用户名密码查询记录
SelectStatementProvider selectStatement = select(id, username,nickName)
.from(UserDynamicSqlSupport.user)
.where(username, isEqualTo(user.getUsername()))
.and(password, isEqualTo(MD5Util.MD5Encode(user.getPassword(), Charsets.UTF_8.name())))
.build()
.render(RenderingStrategies.MYBATIS3);
SelectStatementProvider selectStatement = select(id, username, nickName)
.from(UserDynamicSqlSupport.user)
.where(username, isEqualTo(user.getUsername()))
.and(password, isEqualTo(MD5Util.MD5Encode(user.getPassword(), Charsets.UTF_8.name())))
.build()
.render(RenderingStrategies.MYBATIS3);
List<User> users = userMapper.selectMany(selectStatement);
if (users.size() == 0) {
throw new BusinessException(ResponseStatus.USERNAME_PASS_ERROR);
@ -116,11 +116,11 @@ public class UserServiceImpl implements UserService {
@Override
public Boolean queryIsInShelf(Long userId, Long bookId) {
SelectStatementProvider selectStatement = select(count(UserBookshelfDynamicSqlSupport.id))
.from(userBookshelf)
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
.from(userBookshelf)
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
return userBookshelfMapper.count(selectStatement) > 0;
}
@ -141,10 +141,10 @@ public class UserServiceImpl implements UserService {
@Override
public void removeFromBookShelf(Long userId, Long bookId) {
DeleteStatementProvider deleteStatement = deleteFrom(userBookshelf)
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
userBookshelfMapper.delete(deleteStatement);
}
@ -162,10 +162,10 @@ public class UserServiceImpl implements UserService {
Date currentDate = new Date();
//删除该书以前的历史记录
DeleteStatementProvider deleteStatement = deleteFrom(userReadHistory)
.where(UserReadHistoryDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(UserReadHistoryDynamicSqlSupport.userId, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
.where(UserReadHistoryDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(UserReadHistoryDynamicSqlSupport.userId, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
userReadHistoryMapper.delete(deleteStatement);
//插入该书新的历史记录
@ -177,17 +177,16 @@ public class UserServiceImpl implements UserService {
userReadHistory.setUpdateTime(currentDate);
userReadHistoryMapper.insertSelective(userReadHistory);
//更新书架的阅读历史
UpdateStatementProvider updateStatement = update(userBookshelf)
.set(UserBookshelfDynamicSqlSupport.preContentId)
.equalTo(preContentId)
.set(UserBookshelfDynamicSqlSupport.updateTime)
.equalTo(currentDate)
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
.set(UserBookshelfDynamicSqlSupport.preContentId)
.equalTo(preContentId)
.set(UserBookshelfDynamicSqlSupport.updateTime)
.equalTo(currentDate)
.where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId))
.build()
.render(RenderingStrategies.MYBATIS3);
userBookshelfMapper.update(updateStatement);
@ -206,25 +205,26 @@ public class UserServiceImpl implements UserService {
@Override
public PageBean<UserFeedback> listUserFeedBackByPage(Long userId, int page, int pageSize) {
PageHelper.startPage(page, pageSize);
SelectStatementProvider selectStatement = select(UserFeedbackDynamicSqlSupport.content, UserFeedbackDynamicSqlSupport.createTime)
.from(userFeedback)
.where(UserFeedbackDynamicSqlSupport.userId, isEqualTo(userId))
.orderBy(UserFeedbackDynamicSqlSupport.id.descending())
.build()
.render(RenderingStrategies.MYBATIS3);
SelectStatementProvider selectStatement = select(UserFeedbackDynamicSqlSupport.content,
UserFeedbackDynamicSqlSupport.createTime)
.from(userFeedback)
.where(UserFeedbackDynamicSqlSupport.userId, isEqualTo(userId))
.orderBy(UserFeedbackDynamicSqlSupport.id.descending())
.build()
.render(RenderingStrategies.MYBATIS3);
List<UserFeedback> userFeedbacks = userFeedbackMapper.selectMany(selectStatement);
PageBean<UserFeedback> pageBean = PageBuilder.build(userFeedbacks);
pageBean.setList(BeanUtil.copyList(userFeedbacks,UserFeedbackVO.class));
pageBean.setList(BeanUtil.copyList(userFeedbacks, UserFeedbackVO.class));
return pageBean;
}
@Override
public User userInfo(Long userId) {
SelectStatementProvider selectStatement = select(username, nickName, userPhoto,userSex,accountBalance)
.from(user)
.where(id, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
SelectStatementProvider selectStatement = select(username, nickName, userPhoto, userSex, accountBalance)
.from(user)
.where(id, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
return userMapper.selectMany(selectStatement).get(0);
}
@ -245,39 +245,35 @@ public class UserServiceImpl implements UserService {
@Override
public void updatePassword(Long userId, String oldPassword, String newPassword) {
SelectStatementProvider selectStatement = select(password)
.from(user)
.where(id,isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
if(!userMapper.selectMany(selectStatement).get(0).getPassword().equals(MD5Util.MD5Encode(oldPassword, Charsets.UTF_8.name()))){
.from(user)
.where(id, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
if (!userMapper.selectMany(selectStatement).get(0).getPassword()
.equals(MD5Util.MD5Encode(oldPassword, Charsets.UTF_8.name()))) {
throw new BusinessException(ResponseStatus.OLD_PASSWORD_ERROR);
}
UpdateStatementProvider updateStatement = update(user)
.set(password)
.equalTo(MD5Util.MD5Encode(newPassword, Charsets.UTF_8.name()))
.where(id,isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
.set(password)
.equalTo(MD5Util.MD5Encode(newPassword, Charsets.UTF_8.name()))
.where(id, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3);
userMapper.update(updateStatement);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void addAmount(Long userId, int amount) {
User user = this.userInfo(userId);
user.setId(userId);
user.setAccountBalance(user.getAccountBalance()+amount);
userMapper.updateByPrimaryKeySelective(user);
userMapper.addUserBalance(userId, amount);
}
@Override
public boolean queryIsBuyBookIndex(Long userId, Long bookIndexId) {
return userBuyRecordMapper.count(c ->
c.where(UserBuyRecordDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBuyRecordDynamicSqlSupport.bookIndexId,isEqualTo(bookIndexId))) > 0;
c.where(UserBuyRecordDynamicSqlSupport.userId, isEqualTo(userId))
.and(UserBuyRecordDynamicSqlSupport.bookIndexId, isEqualTo(bookIndexId))) > 0;
}
@Transactional(rollbackFor = Exception.class)
@ -285,7 +281,7 @@ public class UserServiceImpl implements UserService {
public void buyBookIndex(Long userId, UserBuyRecord buyRecord) {
//查询用户余额
long balance = userInfo(userId).getAccountBalance();
if(balance<buyRecord.getBuyAmount()){
if (balance < buyRecord.getBuyAmount()) {
//余额不足
throw new BusinessException(ResponseStatus.USER_NO_BALANCE);
}
@ -296,60 +292,56 @@ public class UserServiceImpl implements UserService {
//减少用户余额
userMapper.update(update(user)
.set(UserDynamicSqlSupport.accountBalance)
.equalTo(balance-buyRecord.getBuyAmount())
.where(id,isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3));
.set(UserDynamicSqlSupport.accountBalance)
.equalTo(balance - buyRecord.getBuyAmount())
.where(id, isEqualTo(userId))
.build()
.render(RenderingStrategies.MYBATIS3));
}
@Override
public int queryBuyMember(Long bookId, Date startTime, Date endTime) {
return userMapper.selectStatistic(select(countDistinct(UserBuyRecordDynamicSqlSupport.userId))
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId,isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime,isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime,isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime, isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime, isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
}
@Override
public int queryBuyCount(Long bookId, Date startTime, Date endTime) {
return userMapper.selectStatistic(select(count(UserBuyRecordDynamicSqlSupport.id))
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId,isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime,isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime,isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime, isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime, isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
}
@Override
public int queryBuyAccount(Long bookId, Date startTime, Date endTime) {
return userMapper.selectStatistic(select(sum(UserBuyRecordDynamicSqlSupport.buyAmount))
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId,isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime,isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime,isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(UserBuyRecordDynamicSqlSupport.createTime, isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime, isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
}
@Override
public int queryBuyTotalMember(List<Long> bookIds, Date startTime, Date endTime) {
return userMapper.selectStatistic(select(countDistinct(UserBuyRecordDynamicSqlSupport.userId))
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId,isIn(bookIds))
.and(UserBuyRecordDynamicSqlSupport.createTime,isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime,isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
.from(UserBuyRecordDynamicSqlSupport.userBuyRecord)
.where(UserBuyRecordDynamicSqlSupport.bookId, isIn(bookIds))
.and(UserBuyRecordDynamicSqlSupport.createTime, isGreaterThanOrEqualTo(startTime))
.and(UserBuyRecordDynamicSqlSupport.createTime, isLessThanOrEqualTo(endTime))
.build()
.render(RenderingStrategies.MYBATIS3));
}
}

View File

@ -34,35 +34,41 @@
</select>
<update id="addVisitCount" >
update book set visit_count = visit_count + ${visitCount}
<update id="addVisitCount">
update book
set visit_count = visit_count + ${visitCount}
where id = #{bookId}
</update>
<select id="listRecBookByCatId" parameterType="int" resultType="com.java2nb.novel.entity.Book">
select id,pic_url,book_name,book_desc
select id, pic_url, book_name, book_desc
from book
where cat_id = #{catId}
and word_count > 0
order by RAND() LIMIT 4
</select>
<update id="addCommentCount" parameterType="long">
update book set comment_count = comment_count+1
where id = #{bookId}
update book
set comment_count = comment_count + 1
where id = #{bookId}
</update>
<select id="queryNetworkPicBooks" resultType="com.java2nb.novel.entity.Book">
select
id,pic_url from book
select id,
pic_url
from book
where pic_url like 'http%'
and pic_url not like concat('%',#{localPicPrefix},'%')
limit #{limit}
and pic_url not like concat('%', #{localPicPrefix}, '%')
limit #{limit}
</select>
<select id="selectIdsByScoreAndRandom" parameterType="int" resultType="com.java2nb.novel.entity.Book">
select id,book_name,author_name,pic_url,book_desc,score from book ORDER BY score,RAND() LIMIT #{limit};
</select>
select id, book_name, author_name, pic_url, book_desc, score
from book
ORDER BY score, RAND() LIMIT #{limit};
</select>
</mapper>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.java2nb.novel.mapper.FrontUserMapper">
<update id="addUserBalance" >
update user set account_balance = account_balance + ${amount}
where id = #{userId}
</update>
</mapper>

View File

@ -331,7 +331,7 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
}
.logo {
width: 198px;
width: 160px;
float: left;
padding: 23px 130px 0 0;
display: block

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -27,15 +27,14 @@
if (layerStatus == 1) {
$("#cFavs").html("<a class=\"ico_shelf\" href=\"javascript:void(0);\"><b>已收藏</b></a>");
jQuery.cookie("u-faorites", "1");
}
else {
} else {
$("#cFavs").html("<a class=\"btn_ora_white btn_addsj\" href=\"javascript:void(0);\">已在书架</a>");
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -91,7 +90,7 @@
}
},
SaveComment: function (cmtBId, cmtCId, cmtDetail) {
if(!isLogin){
if (!isLogin) {
layer.alert('请先登陆');
return;
}
@ -121,7 +120,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -187,7 +186,7 @@
localStorage.setItem("fonts", fonts);
$(".readBox").css("font-size", fonts + "px");
$("#cFonts").html(fonts);
$("#ChapterBody").attr("class","article-content font"+fonts);
$("#ChapterBody").attr("class", "article-content font" + fonts);
BookDetail.reShowCover();
},
SetBackUpColor: function (colorNum) {

View File

@ -1,10 +1,11 @@
var needLoginPath = ['/user/favorites.html','/user/comment.html','/user/feedback.html',
'/user/feedback_list.html','/user/read_history.html','/user/set_name.html',
'/user/set_password.html','/user/set_sex.html','/user/setup.html','/user/userinfo.html',
var needLoginPath = ['/user/favorites.html', '/user/comment.html', '/user/feedback.html',
'/user/feedback_list.html', '/user/read_history.html', '/user/set_name.html',
'/user/set_password.html', '/user/set_sex.html', '/user/setup.html', '/user/userinfo.html',
"/pay/index.html," +
"/author/register.html","/author/index.html"];
"/author/register.html", "/author/index.html"];
var isLogin = false;
var url = window.location.search;
//key(需要检索的键
function getSearchString(key) {
var str = url;
@ -14,26 +15,28 @@ function getSearchString(key) {
for (var i = 0; i < arr.length; i++) {
var tmp_arr = arr[i].split("=");
if(tmp_arr[0] == key){
if (tmp_arr[0] == key) {
return decodeURIComponent(tmp_arr[1]);
}
}
return undefined;
}
var keyword = getSearchString("k");
if(keyword != undefined) {
if (keyword != undefined) {
$("#searchKey").val(keyword);
$("#workDirection").remove();
$("#idGirl").remove();
}
function searchByK(k){
if(!k){
window.location.href='/book/bookclass.html?k='+encodeURIComponent(document.getElementById("searchKey").value)
}else{
window.location.href='/book/bookclass.html?k='+encodeURIComponent(k)
function searchByK(k) {
if (!k) {
window.location.href = '/book/bookclass.html?k=' + encodeURIComponent(document.getElementById("searchKey").value)
} else {
window.location.href = '/book/bookclass.html?k=' + encodeURIComponent(k)
}
}
$("#searchKey").keypress(function (even) {
if (even.which == 13) {
even.stopPropagation();
@ -50,37 +53,37 @@ Array.prototype.indexOf = function (val) {
var token = $.cookie('Authorization');
if(!token){
if(needLoginPath.indexOf(window.location.pathname) != -1){
location.href = '/user/login.html?originUrl='+decodeURIComponent(location.href);
if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}
$(".user_link").html("<i class=\"line mr20\">|</i><a href=\"/user/login.html\" class=\"mr15\">登录</a><a href=\"/user/register.html\" >注册</a>");
}else{
} else {
$.ajax({
type: "POST",
url: "/user/refreshToken",
data: {},
dataType: "json",
success: function(data){
if(data.code == 200){
success: function (data) {
if (data.code == 200) {
$(".user_link").html("<i class=\"line mr20\">|</i>" +
"<a href=\"/user/userinfo.html\" class=\"mr15\">"+data.data.nickName+"</a>" +
"<a href=\"/user/userinfo.html\" class=\"mr15\">" + data.data.nickName + "</a>" +
"<a href=\"javascript:logout()\" >退出</a>");
;
if("/user/login.html" == window.location.pathname){
if ("/user/login.html" == window.location.pathname) {
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
return;
}
isLogin = true;
if(localStorage.getItem("autoLogin") == 1){
$.cookie('Authorization', data.data.token, { expires: 7 ,path: '/' });
}else {
$.cookie('Authorization', data.data.token,{ path: '/' });
if (localStorage.getItem("autoLogin") == 1) {
$.cookie('Authorization', data.data.token, {expires: 7, path: '/'});
} else {
$.cookie('Authorization', data.data.token, {path: '/'});
}
}else{
if(needLoginPath.indexOf(window.location.pathname) != -1){
} else {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html';
}
$(".user_link").html("<i class=\"line mr20\">|</i><a href=\"/user/login.html\" class=\"mr15\">登录</a><a href=\"/user/register.html\" >注册</a>");
@ -94,7 +97,6 @@ if(!token){
}
String.prototype.isPhone = function () {
var strTemp = /^1[3|4|5|6|7|8|9][0-9]{9}$/;
if (strTemp.test(this)) {
@ -104,7 +106,7 @@ String.prototype.isPhone = function () {
};
String.prototype.isBlank = function () {
if(this == null || $.trim(this) == ""){
if (this == null || $.trim(this) == "") {
return true;
}
return false;
@ -118,11 +120,8 @@ String.prototype.isNickName = function () {
};
function logout() {
$.cookie('Authorization', null,{ path: '/' });
$.cookie('Authorization', null, {path: '/'});
location.reload();
}
@ -133,9 +132,9 @@ function isImg(str) {
//校验图片上传
function checkPicUpload(file){
function checkPicUpload(file) {
if(!isImg(file.value.substr(file.value.lastIndexOf(".")))){
if (!isImg(file.value.substr(file.value.lastIndexOf(".")))) {
layer.alert('只能上传图片格式的文件');
return false;
}
@ -144,13 +143,13 @@ function checkPicUpload(file){
if (isIE && !file.files) {
var filePath = file.value;
var fileSystem = new ActiveXObject("Scripting.FileSystemfileect");
var file = fileSystem.GetFile (filePath);
var file = fileSystem.GetFile(filePath);
fileSize = file.Size;
}else {
} else {
fileSize = file.files[0].size;
}
fileSize=Math.round(fileSize/1024*100)/100; //单位为KB
if(fileSize>=1024){
fileSize = Math.round(fileSize / 1024 * 100) / 100; //单位为KB
if (fileSize >= 1024) {
layer.alert('上传的图片大小不能超过1M');
return false;
}

View File

@ -106,10 +106,10 @@ Array.prototype.remove = function (val) {
var token = $.cookie('Authorization');
if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}
$(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
// $(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
} else {
$.ajax({
type: "POST",
@ -118,10 +118,10 @@ if (!token) {
dataType: "json",
success: function (data) {
if (data.code == 200) {
$(".user_link").html("<a href=\"/user/userinfo.html\"><i style=\"font-size: 20px;\" class=\"layui-icon \n" +
"\">&#xe66f;" +
"\n" +
"</i></a>");
// $(".user_link").html("<a href=\"/user/userinfo.html\"><i style=\"font-size: 20px;\" class=\"layui-icon \n" +
// "\">&#xe66f;" +
// "\n" +
// "</i></a>");
if ("/user/login.html" == window.location.pathname) {
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
@ -137,7 +137,7 @@ if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html';
}
$(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
// $(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
}
},
error: function () {

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,14 +7,15 @@
<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 class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
@ -37,7 +38,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="/author/author_income_detail.html">订阅明细</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/author/author_income.html" class="red">稿费汇总</a></h2>
<h2 class="fl ml10"><a href="/author/author_income_detail.html">订阅明细</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/author/author_income.html" class="red">稿费汇总</a></h2>
</div>
<div id="divData" class="updateTable">
@ -62,7 +65,6 @@
<tbody id="bookList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -120,24 +122,24 @@
$.ajax({
type: "get",
url: "/author/listIncomeMonthByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookList = data.data.list;
if (bookList.length > 0) {
var bookListHtml = "";
for(var i=0;i<bookList.length;i++){
for (var i = 0; i < bookList.length; i++) {
var book = bookList[i];
bookListHtml+=(" <tr class=\"book_list\" >\n" +
bookListHtml += (" <tr class=\"book_list\" >\n" +
" <td class=\"goread\">\n" +
" "+book.incomeMonth+"</td>\n" +
" " + book.incomeMonth + "</td>\n" +
" <td class=\"goread\" >"
+book.preTaxIncome/100+"</td>\n" +
+ book.preTaxIncome / 100 + "</td>\n" +
" <td class=\"goread\">\n" +
" "+book.afterTaxIncome/100+"\n" +
" " + book.afterTaxIncome / 100 + "\n" +
" </td>\n" +
" <td class=\"goread\">"+(book.payStatus == 1 ? '已支付' : '待支付')+
" <td class=\"goread\">" + (book.payStatus == 1 ? '已支付' : '待支付') +
" </td>\n" +
" </tr>");
@ -176,9 +178,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -191,12 +193,12 @@
}
function updateBookStatus(bookId,status) {
function updateBookStatus(bookId, status) {
$.ajax({
type: "POST",
url: "/author/updateBookStatus",
data: {'bookId':bookId,'status':status==0?1:0},
data: {'bookId': bookId, 'status': status == 0 ? 1 : 0},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -206,9 +208,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -219,9 +221,6 @@
})
}
</script>
</html>

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,14 +7,15 @@
<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 class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
@ -37,7 +38,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="/author/author_income_detail.html" class="red">订阅明细</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/author/author_income.html">稿费汇总</a></h2>
<h2 class="fl ml10"><a href="/author/author_income_detail.html" class="red">订阅明细</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/author/author_income.html">稿费汇总</a></h2>
</div>
<div id="divData" class="updateTable">
@ -61,7 +64,6 @@
<tbody id="bookList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -117,9 +119,9 @@
function search(curr, limit) {
var data = {'curr':curr,'limit':limit};
var data = {'curr': curr, 'limit': limit};
if(bookId){
if (bookId) {
data.bookId = bookId;
}
@ -133,17 +135,17 @@
var bookList = data.data.list;
if (bookList.length > 0) {
var bookListHtml = "";
for(var i=0;i<bookList.length;i++){
for (var i = 0; i < bookList.length; i++) {
var book = bookList[i];
bookListHtml+=(" <tr class=\"book_list\" >\n" +
bookListHtml += (" <tr class=\"book_list\" >\n" +
" <td class=\"goread\">\n" +
" "+book.incomeDate+"</td>\n" +
" " + book.incomeDate + "</td>\n" +
" <td class=\"goread\" >"
+book.incomeAccount+"</td>\n" +
+ book.incomeAccount + "</td>\n" +
" <td class=\"goread\">\n" +
" "+book.incomeCount+"\n" +
" " + book.incomeCount + "\n" +
" </td>\n" +
" <td class=\"goread\">"+book.incomeNumber+
" <td class=\"goread\">" + book.incomeNumber +
" </td>\n" +
" </tr>");
@ -182,9 +184,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -197,12 +199,12 @@
}
function updateBookStatus(bookId,status) {
function updateBookStatus(bookId, status) {
$.ajax({
type: "POST",
url: "/author/updateBookStatus",
data: {'bookId':bookId,'status':status==0?1:0},
data: {'bookId': bookId, 'status': status == 0 ? 1 : 0},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -212,9 +214,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -225,9 +227,6 @@
})
}
</script>
</html>

View File

@ -231,7 +231,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -261,7 +261,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -213,7 +213,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -300,7 +300,7 @@
layer.close(index);
$.ajax({
type: "delete",
url: "/author/deleteIndex/"+indexId,
url: "/author/deleteIndex/" + indexId,
data: {},
dataType: "json",
success: function (data) {
@ -311,7 +311,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -380,7 +380,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -2,10 +2,10 @@
<div class="box_center cf">
<div class="copyright">
<ul>
<li class="menu"><a href="/?to=mobile">手机站</a><i class="line">|</i><a href="/">网站首页</a><i
<li class="menu"><!--<a href="/?to=mobile">手机站</a><i class="line">|</i>--><a href="/">网站首页</a><i
class="line">|</i><a href="/user/feedback.html">反馈留言</a><i class="line">|</i><a
href="/author/index.html">作家专区</a><i class="line">|</i><a
href="/mobile/fiction_house.apk">客户端</a></li>
href="/author/index.html">作家专区</a><!--<i class="line">|</i><a
href="/mobile/fiction_house.apk">客户端</a>--></li>
<li th:text="'Copyright (C) '+${application.website.domain}+' All rights reserved&nbsp;&nbsp;'+${application.website.name}+'版权所有'"></li>
</ul>

View File

@ -161,11 +161,6 @@
text-align: center;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
@ -210,6 +205,26 @@
字体<a id="fontbig" class="sizebg" onclick="nr_setbg('big')">大</a> <a id="fontmiddle" class="button sizebgon"
onclick="nr_setbg('middle')"></a> <a
id="fontsmall" class="sizebg" onclick="nr_setbg('small')">小</a>
<a href="javascript:speakChapter()" style="margin-left: 10px">
<svg t="1707099868768" class="icon" viewBox="0 0 800 800" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="1783" id="mx_n_1707099868769" width="22" height="22">
<path d="M393.707231 292.571429L343.13933 487.619048l46.955908 234.779541-97.523809-45.149912-66.82187-108.359788-21.671958-86.687831 66.82187-113.777778z"
fill="#3eaf7c" p-id="1784"></path>
<path d="M451.499118 509.291005a104.747795 61.40388 90 1 0 122.80776 0 104.747795 61.40388 90 1 0-122.80776 0Z"
fill="#3eaf7c" p-id="1785"></path>
<path d="M426.215168 781.996473c-3.611993 0-7.223986-1.805996-10.835979-3.611993l-117.389771-86.687831c-36.119929-23.477954-65.015873-57.791887-83.075838-99.329806-10.835979-25.283951-16.253968-52.373898-16.253968-81.269841s5.417989-55.985891 16.253968-81.269842c16.253968-41.537919 45.149912-74.045855 83.075838-97.523809l110.165785-77.657848c9.029982-5.417989 19.865961-3.611993 25.28395 3.611993 5.417989 9.029982 3.611993 19.865961-3.611993 25.28395L319.661376 361.199295c-32.507937 19.865961-55.985891 48.761905-70.433863 81.269841-9.029982 21.671958-14.447972 45.149912-14.447972 68.627866 0 23.477954 3.611993 45.149912 12.641976 66.821869 14.447972 34.313933 37.925926 63.209877 68.627866 83.075838l117.38977 86.687831c7.223986 5.417989 9.029982 18.059965 3.611993 25.28395 0 5.417989-5.417989 9.029982-10.835978 9.029983z"
fill="#3eaf7c" p-id="1786"></path>
<path d="M523.738977 830.758377c-108.359788 0-193.241623-140.867725-193.241623-317.855379S415.379189 193.241623 523.738977 193.241623c25.283951 0 50.567901 7.223986 74.045855 23.477954 9.029982 5.417989 10.835979 16.253968 5.41799 25.28395s-16.253968 10.835979-25.283951 5.41799c-18.059965-10.835979-34.313933-18.059965-54.179894-18.059965-84.881834 0-157.121693 130.031746-157.121693 281.73545S438.857143 794.638448 523.738977 794.638448s157.121693-130.031746 157.121693-281.73545c0-74.045855-16.253968-146.285714-46.955908-198.659612-5.417989-9.029982-1.805996-19.865961 7.223986-25.28395 9.029982-5.417989 19.865961-1.805996 25.28395 7.223986 32.507937 59.597884 50.567901 135.449735 50.567902 216.719576C718.786596 689.890653 633.904762 830.758377 523.738977 830.758377z"
fill="#3eaf7c" p-id="1787"></path>
<path d="M523.738977 646.546737c-48.761905 0-86.687831-59.597884-86.687831-133.643739S474.977072 379.259259 523.738977 379.259259s86.687831 59.597884 86.687831 133.643739-37.925926 133.643739-86.687831 133.643739z m0-232.973545c-23.477954 0-50.567901 39.731922-50.567901 97.52381s27.089947 97.52381 50.567901 97.523809 50.567901-39.731922 50.567901-97.523809-27.089947-97.52381-50.567901-97.52381z"
fill="#3eaf7c" p-id="1788"></path>
<path d="M523.738977 413.573192h-1.805996l-92.105821-10.835979c-9.029982-1.805996-16.253968-10.835979-16.253968-19.865961 1.805996-9.029982 10.835979-16.253968 19.865961-16.253968l92.105821 10.835979c9.029982 1.805996 16.253968 10.835979 16.253968 19.865961 0 9.029982-9.029982 16.253968-18.059965 16.253968zM372.035273 662.800705c-9.029982 0-16.253968-7.223986-18.059964-16.253968-1.805996-9.029982 5.417989-18.059965 16.253968-19.865961l153.5097-16.253968c9.029982-1.805996 18.059965 5.417989 19.865961 16.253968 1.805996 9.029982-5.417989 18.059965-16.253968 19.865961l-153.5097 16.253968h-1.805997z"
fill="#3eaf7c" p-id="1789"></path>
<path d="M763.936508 364.811287c-5.417989 0-9.029982-1.805996-12.641975-5.417989-7.223986-7.223986-7.223986-18.059965 0-25.283951l25.28395-25.28395c7.223986-7.223986 18.059965-7.223986 25.283951 0s7.223986 18.059965 0 25.28395L776.578483 359.393298c-3.611993 3.611993-9.029982 5.417989-12.641975 5.417989zM771.160494 720.592593c-5.417989 0-9.029982-1.805996-12.641975-5.41799l-25.283951-25.28395c-7.223986-7.223986-7.223986-18.059965 0-25.283951s18.059965-7.223986 25.283951 0l25.28395 25.283951c7.223986 7.223986 7.223986 18.059965 0 25.28395-3.611993 3.611993-7.223986 5.417989-12.641975 5.41799zM819.922399 529.156966h-54.179895c-10.835979 0-18.059965-7.223986-18.059964-18.059964s7.223986-18.059965 18.059964-18.059965h54.179895c10.835979 0 18.059965 7.223986 18.059964 18.059965s-9.029982 18.059965-18.059964 18.059964z"
fill="#3eaf7c" p-id="1790"></path>
</svg>
</a>
</p>
<div class="indexDiv" style="height: 42px;line-height: 42px;text-align:center;background: #f2f2f2">
@ -241,7 +256,7 @@
</div>
<div id="chaptercontent" class="Readarea ReadAjax_content screen_container"
style="color: rgb(0, 0, 0); font-size: 20px;" th:if="${!needBuy}">
<p style="width:100%;text-alight:center; overflow: auto;-webkit-overflow-scrolling:touch;">&nbsp;&nbsp;&nbsp;&nbsp;
<p style="width:100%;text-alight:center; overflow: auto;-webkit-overflow-scrolling:touch;">
<span
th:utext="${bookContent.content}"></span></p>
</div>
@ -300,8 +315,6 @@
}
})
$("#content").css("min-height", ($(window).height() - 60) + "px");
})();
@ -352,7 +365,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
@ -389,6 +402,79 @@
}
console.log(speechSynthesis.getVoices());
$(window).on('beforeunload', function () {
if (speechSynthesis.speaking) {
speechSynthesis.cancel()
}
});
function speakChapter() {
console.log('speechSynthesis.paused', speechSynthesis.paused)
console.log('speechSynthesis.pending', speechSynthesis.pending)
console.log('speechSynthesis.speaking', speechSynthesis.speaking)
if (speechSynthesis.speaking && !speechSynthesis.paused) {
speechSynthesis.pause();
return;
}
if (speechSynthesis.speaking && speechSynthesis.paused) {
speechSynthesis.resume();
}
speak({
'text': $('#chaptercontent').text(),
'speechRate': 0.5,
'pitch': 1,
'lang': 'zh-CN'
}, function () {
console.log('语音播放结束');
}, function () {
console.log('语音开始播放');
});
}
/**
* @description 文字转语音方法
* @public
* @param { text, rate, lang, volume, pitch } object
* @param text 要合成的文字内容字符串
* @param speechRate 读取文字的语速 0.1~10 正常1
* @param lang 读取文字时的语言
* @param volume 读取时声音的音量 0~1 正常1
* @param voice 读取文字的语音服务
* @param pitch 读取时声音的音高 0~2 正常1
* @returns SpeechSynthesisUtterance
*/
function speak({text, speechRate, lang, volume, pitch, voice}, endEvent, startEvent) {
if (!window.SpeechSynthesisUtterance) {
console.warn('当前浏览器不支持文字转语音服务')
return;
}
if (!text) {
return;
}
const speechUtterance = new SpeechSynthesisUtterance();
speechUtterance.text = text;
speechUtterance.rate = speechRate || 1;
speechUtterance.lang = lang || 'zh-CN';
speechUtterance.volume = volume || 1;
speechUtterance.pitch = pitch || 1;
speechUtterance.voice = voice || null;
speechUtterance.onend = function () {
endEvent && endEvent();
};
speechUtterance.onstart = function () {
startEvent && startEvent();
};
speechSynthesis.speak(speechUtterance);
return speechUtterance;
}
</script>

View File

@ -274,7 +274,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -289,8 +289,6 @@
}
$("#content").css("min-height", ($(window).height() - 60) + "px");
function downloadFile() {
var fileUrl = '/book/download?bookId=' + $("#bookIdHidden").val() + '&bookName=' + $("#bookNamedHidden").val();
window.location.href = fileUrl;

View File

@ -36,41 +36,43 @@
</div>
</head>
<body>
<div id="content">
<input type="hidden" id="bookIdHidden" th:value="${book.id}"/>
<div style="height: 50px;line-height: 50px;text-align: center" class="layui-header header header-doc layui-bg-cyan">
<input type="hidden" id="bookIdHidden" th:value="${book.id}"/>
<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: #fff;" class="layui-icon">&#xe65c;</i></a>
<div style="float: left;margin-left: 10px">
<a href="javascript:history.go(-1)">
<i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe65c;</i></a>
</div>
<a style="color: #ffffff;" th:href="'/book/'+ ${book.id} + '.html'"><b class="layui-icon"
th:utext="${book.bookName}"></b></a>
<div style="float: right;margin-right: 10px">
<a href="/"><i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe68e;</i></a>
</div>
</div>
<a style="color: #ffffff;" th:href="'/book/'+ ${book.id} + '.html'"><b class="layui-icon" th:utext="${book.bookName}"></b></a>
<div style="float: right;margin-right: 10px">
<a href="/"><i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe68e;</i></a>
</div>
</div>
<p style="height: 30px;line-height: 30px;padding: 10px">
<p style="height: 30px;line-height: 30px;padding: 10px">
<a href="#buttom" style="color: red">&nbsp;&nbsp;直达页面底部</a>
</p>
<div class="layui-colla-content layui-show indexP layui-row">
<p class="line-limit-length layui-col-xs12 layui-col-sm4 layui-col-md3 layui-col-lg2" style="padding-left:10px;height: 50px;line-height: 50px;" th:each="index : ${bookIndexList}">
<a style="color:#333;" th:href="'/book/'+${index.bookId}+'/'+${index.id}+'.html'" th:utext="${index.indexName}">
</a>
<a href="#buttom" style="color: red">&nbsp;&nbsp;直达页面底部</a>
</p>
<div class="layui-colla-content layui-show indexP layui-row">
<p class="line-limit-length layui-col-xs12 layui-col-sm4 layui-col-md3 layui-col-lg2"
style="padding-left:10px;height: 50px;line-height: 50px;" th:each="index : ${bookIndexList}">
<a style="color:#333;" th:href="'/book/'+${index.bookId}+'/'+${index.id}+'.html'"
th:utext="${index.indexName}">
</div>
</a>
</p>
</div>
</div>
<div th:replace="mobile/common/footer :: footer">
</div>
@ -80,13 +82,14 @@
<div th:replace="mobile/common/js :: js">
</div>
<script>
$("#content").css("min-height",($(window).height()-60)+"px");
$.get("/book/addVisit",{"bookId":$("#bookIdHidden").val()},function(){});
function toMyCollect(){
$.get("/book/addVisit", {"bookId": $("#bookIdHidden").val()}, function () {
});
function toMyCollect() {
var token = localStorage.getItem("token");
if(token) {
if (token) {
window.location.href = "/book/search?token=" + token;
}else{
} else {
window.location.href = "/user/login.html";
}
}

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>

View File

@ -1,6 +1,11 @@
<div th:fragment="css">
<link rel="stylesheet" href="/mobile/layui/css/layui.css">
<style type="text/css">
body {
min-height: 100vh;
position: relative;
}
.app {
display: none;
}
@ -22,9 +27,12 @@
}
#footer {
padding-top: 6px;
height: 60px;
line-height: 54px;
position: absolute;
bottom: 0px;
left: 0;
right: 0;
height: 50px;
line-height: 48px;
text-align: center;
}
</style>

View File

@ -1,15 +1,19 @@
<div th:fragment="footer" id="footer"
class="layui-footer footer footer-demo layui-bg-cyan">
<!--<a href="/mobile/book/searchSoftBook.html" style="font-size: 14px;color: #fff;">轻小说</a>
<a href="/mobile/book/searchSoftBook.html?catId=9" style="font-size: 14px;color: #fff;margin-left: 8px">漫画</a>-->
<a href="/?to=pc" style="font-size: 14px;color: #fff;margin-left: 8px">电脑站</a>
<a href="/user/read_history.html" style="font-size: 14px;color: #fff;margin-left: 8px">阅读记录</a>
<a href="/user/favorites.html" style="font-size: 14px;color: #fff;margin-left: 8px">书架</a>
<a href="/mobile/fiction_house.apk" style="font-size: 14px;color: #fff;margin-left: 8px">客户端</a>
<!--<a href="https://www.zinglizingli.xyz/me/index.html" style="font-size: 14px;color: #fff;margin-left: 8px">开发者</a>-->
<div th:fragment="footer">
<div style="height: 50px"></div>
<div id="footer"
class="layui-footer footer footer-demo layui-bg-cyan">
<!--<a href="/mobile/book/searchSoftBook.html" style="font-size: 14px;color: #fff;">轻小说</a>
<a href="/mobile/book/searchSoftBook.html?catId=9" style="font-size: 14px;color: #fff;margin-left: 8px">漫画</a>-->
<!--<a href="/?to=pc" style="font-size: 14px;color: #fff;margin-left: 8px">电脑站</a>-->
<a href="/" style="font-size: 16px;color: #fff;">首页</a>
<a href="/user/read_history.html" style="font-size: 16px;color: #fff;margin-left: 18px">阅读记录</a>
<a href="/user/favorites.html" style="font-size: 16px;color: #fff;margin-left: 18px">书架</a>
<!--<a href="/mobile/fiction_house.apk" style="font-size: 14px;color: #fff;margin-left: 8px">客户端</a>-->
<!--<a href="https://www.zinglizingli.xyz/me/index.html" style="font-size: 14px;color: #fff;margin-left: 8px">开发者</a>-->
<div style="float: right"><a href="#top"><i class="layui-icon"
style="margin-right:15px;font-size: 30px;color:#fff ">&#xe604;</i></a>
<div style="margin-top:-3px;float: right"><a href="#top"><i class="layui-icon"
style="margin-right:15px;font-size: 25px;color:#fff ">&#xe604;</i></a>
</div>
</div>
</div>

View File

@ -1,3 +1,3 @@
<script th:fragment="js" src="/mobile/js/jquery-1.9.1.js"></script>
<script th:fragment="js" src="/mobile/layui/layui.all.js"></script>
<script th:fragment="js" src="/mobile/js/common.js"></script>
<script th:fragment="js" src="/mobile/js/common.js?v2"></script>

View File

@ -41,18 +41,16 @@
}
.user_link {
position: relative;
display: inline-block;
vertical-align: middle;
line-height: 50px;
padding: 0 5px;
color: #fff;
line-height: 40px;
float: right;
color: #3eaf7c;
padding: 11px 12px 0;
}
.user_link a {
color: #fff;
color: #3eaf7c;
}
</style>
@ -64,92 +62,39 @@
<!-- 你的HTML代码 -->
<a name="top"></a>
<ul class="layui-nav app" lay-filter="" style="display:none;padding:0 10px;text-align: center">
<li class="layui-nav-item"><a>分类</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?catId=1&sort=last_index_update_time">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=2&sort=last_index_update_time">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=3&sort=last_index_update_time">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=4&sort=last_index_update_time">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=6&sort=last_index_update_time">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=5&sort=last_index_update_time">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=7&sort=last_index_update_time">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>全本</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?bookStatus=1">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>排行</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?sortBy=visit_count">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="user_link"></li>
<div style="height: 40px;">
<div style="line-height: 50px;width: 120px;float:left;padding-left: 10px"><img style="width: 150px;"
th:src="${application.website.logo}">
</div>
<div class="user_link">
<a style="padding-right: 3px" href="/user/favorites.html">
<svg t="1693622464904" class="icon" viewBox="0 0 1097 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="3653" width="23px" height="23px">
<path d="M998.58390632 852.14701166H126.84569332A41.51236 41.51236 0 0 0 85.33333332 893.65937166v62.26854a41.51236 41.51236 0 0 0 41.51236 41.51236h871.738213a41.51236 41.51236 0 0 0 41.51236-41.51236v-62.26854a41.51236 41.51236 0 0 0-41.51236-41.51236z m-29.293426 83.014048h-813.172704a8.537246 8.537246 0 0 1-8.537246-8.537246v-3.681687a8.537246 8.537246 0 0 1 8.537246-8.537247h813.172704a8.537246 8.537246 0 0 1 8.537246 8.537247v3.681687a8.537246 8.537246 0 0 1-8.537246 8.537246zM126.84569332 810.63465166h124.537079a41.51236 41.51236 0 0 0 41.51236-41.51236V229.47228566a41.51236 41.51236 0 0 0-41.51236-41.51236H126.84569332A41.51236 41.51236 0 0 0 85.33333332 229.47228566v539.650006a41.51236 41.51236 0 0 0 41.51236 41.51236zM156.72605532 246.49342066h64.883071a12.805869 12.805869 0 0 1 12.805869 12.805869v479.995998a12.805869 12.805869 0 0 1-12.805869 12.80587H156.72605532a12.805869 12.805869 0 0 1-12.80587-12.80587V259.29928966a12.805869 12.805869 0 0 1 12.80587-12.805869z m239.939305 564.141231h124.53708a41.51236 41.51236 0 0 0 41.51236-41.51236V278.62548066l291.653674 510.335237 0.266789 0.480221a41.619075 41.619075 0 0 0 56.826045 15.527116l107.932136-62.962191A42.600859 42.600859 0 0 0 1034.18422332 684.02729066L727.73976932 147.49337866l-0.266789-0.48022a41.619075 41.619075 0 0 0-56.826045-15.527116l-107.932135 62.962191V84.17902666A41.51236 41.51236 0 0 0 521.20244032 42.66666666h-124.53708a41.51236 41.51236 0 0 0-41.51236 41.51236v684.943265a41.51236 41.51236 0 0 0 41.51236 41.51236z m296.295802-597.938055a3.735045 3.735045 0 0 1 5.122348 1.376631l259.841761 454.608363a12.805869 12.805869 0 0 1-4.663471 17.415982l-56.271124 32.825712a12.805869 12.805869 0 0 1-17.544041-4.663471L624.11894332 267.59109066a12.805869 12.805869 0 0 1 4.663471-17.415983zM426.49236432 101.20016166h64.883072a12.805869 12.805869 0 0 1 12.805869 12.805869v625.289257a12.805869 12.805869 0 0 1-12.805869 12.80587h-64.883072a12.805869 12.805869 0 0 1-12.805869-12.80587V114.00603066a12.805869 12.805869 0 0 1 12.805869-12.805869z m0 0"
p-id="3654" fill="#3eaf7c"></path>
</svg>
</a>
<a href="/user/userinfo.html">
<svg t="1698639187751" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="4190" width="23" height="23">
<path d="M704 329.152C704 209.365333 622.848 128 512 128s-192 81.365333-192 201.152C320 454.762667 407.146667 554.666667 512 554.666667s192-99.904 192-225.514667z m42.666667 0C746.666667 476.714667 642.176 597.333333 512 597.333333s-234.666667-120.618667-234.666667-268.181333C277.333333 181.546667 381.824 85.333333 512 85.333333s234.666667 96.213333 234.666667 243.818667zM512.106667 640c408.96 0 404.864 256.512 404.864 256.512 3.093333 23.274667-13.482667 42.154667-37.098667 42.154667H144.32c-23.573333 0-41.088-19.136-37.077333-42.154667 0 0-4.096-256.512 404.864-256.512zM149.909333 896l0.064 3.861333-0.704 3.968c0.682667-3.882667-2.837333-7.829333-4.949333-7.829333H879.872c-2.154667 0-5.504 3.818667-5.205333 6.144l-0.426667-3.157333 0.064-3.157334c0-0.853333-0.128-3.349333-0.533333-7.125333a161.813333 161.813333 0 0 0-4.266667-23.082667 192.96 192.96 0 0 0-35.242667-71.104C780.330667 725.461333 678.634667 682.666667 512.106667 682.666667c-166.549333 0-268.224 42.794667-322.176 111.850666a192.96 192.96 0 0 0-35.242667 71.104c-2.176 8.426667-3.541333 16.192-4.266667 23.082667a81.045333 81.045333 0 0 0-0.512 7.296z"
fill="#3eaf7c" p-id="4191"></path>
</svg>
</a>
</ul>
<ul class="layui-nav pc" lay-filter="" style="padding:0 36px;text-align: center">
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=1&sort=last_index_update_time">玄幻小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=2&sort=last_index_update_time">修真小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=3&sort=last_index_update_time">都市小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=4&sort=last_index_update_time">历史小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=6&sort=last_index_update_time">网游小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=5&sort=last_index_update_time">科幻小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=7&sort=last_index_update_time">女频小说</a></li>
<li class="layui-nav-item"><a>完本小说</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="/book/book_ranking.html?bookStatus=1">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>小说排行</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="/book/book_ranking.html?sortBy=visit_count">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="user_link"></li>
</div>
</div>
</ul>
<div class="layui-container">
<div class="layui-container" style="padding-left: 2%">
<div class="layui-row">
<div class="layui-col-xs10 layui-col-sm10 layui-col-md11 layui-col-lg11" style="padding-top:1%">
<div class="layui-col-xs10 layui-col-sm10 layui-col-md11 layui-col-lg11">
<input id="title" type="text" name="title" required lay-verify="required" placeholder="请输入书名·作者"
autocomplete="off"
class="layui-input">
</div>
<div class="layui-col-xs1" style="padding: 1%">
<div class="layui-col-xs1" style="padding: 0 1% 1%">
<button onclick="searchBooks()" class="layui-btn" lay-submit lay-filter="formDemo">搜索</button>
</div>
</div>
@ -263,7 +208,7 @@
if (data.code == 200) {
var updateRankBooks = data.data;
var updateRankBookHtml = "";
for (var i = 0; i < 10; i++) {
for (var i = 0; i < updateRankBooks.length; i++) {
var updateRankBook = updateRankBooks[i];
if (updateRankBook.bookDesc) {

View File

@ -5,7 +5,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title th:text="${application.website.name}+'列表'"></title>
<title th:text="${application.website.name}+'充值'"></title>
<meta name="keywords"
th:content="${application.website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
@ -79,11 +79,6 @@
padding-bottom: 20px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -170,7 +165,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
//查询用户信息
$.ajax({
@ -190,7 +184,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -113,7 +109,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
search(1, 20);

View File

@ -25,19 +25,20 @@
</a>
</div>
</div>
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form" action="">
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form"
action="">
<input type="hidden" id="bookIdHidden" name="bookId" th:value="${bookId}"/>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
@ -49,8 +50,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="button" value="登录" id="btnLogin" class="layui-btn" />
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<input type="button" value="登录" id="btnLogin" class="layui-btn"/>
<a class="layui-btn layui-btn-primary" href="/user/register.html">注册</a>
</div>
</div>
</form>
@ -62,25 +63,24 @@
<div th:replace="mobile/common/js :: js">
</div>
<script type="text/javascript">
$("#form1").css("min-height",($(window).height() - 140)+"px")
if(localStorage.getItem("autoLogin")==1){
$("#autoLogin").prop("checked",'true');
layui.form.render('checkbox','loginForm');
}else{
if (localStorage.getItem("autoLogin") == 1) {
$("#autoLogin").prop("checked", 'true');
layui.form.render('checkbox', 'loginForm');
} else {
$("#autoLogin").removeAttr("checked");
}
$("#btnLogin").click(function () {
var username = $("#txtUName").val();
if(username.isBlank()){
if (username.isBlank()) {
layer.alert("手机号不能为空!");
return;
}
if(!username.isPhone()){
if (!username.isPhone()) {
layer.alert("手机号格式不正确!");
return;
}
var password = $("#txtPassword").val();
if(password.isBlank()){
if (password.isBlank()) {
layer.alert("密码不能为空!");
return;
}
@ -91,12 +91,12 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if($("#autoLogin").is(':checked')){
$.cookie('Authorization', data.data.token, { expires: 7 ,path: '/' });
localStorage.setItem("autoLogin","1");
}else {
$.cookie('Authorization', data.data.token,{ path: '/' });
localStorage.setItem("autoLogin","0");
if ($("#autoLogin").is(':checked')) {
$.cookie('Authorization', data.data.token, {expires: 7, path: '/'});
localStorage.setItem("autoLogin", "1");
} else {
$.cookie('Authorization', data.data.token, {path: '/'});
localStorage.setItem("autoLogin", "0");
}
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
@ -114,5 +114,4 @@
</script>
</html>

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -113,7 +109,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
search(1, 20);

View File

@ -25,20 +25,21 @@
</a>
</div>
</div>
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form" action="">
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form"
action="">
<input type="hidden" id="bookIdHidden" name="bookId" th:value="${bookId}"/>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
@ -46,7 +47,7 @@
<div class="layui-form-item ">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="TxtChkCode" placeholder="请输入验证码"
<input name="txtUName" type="text" id="TxtChkCode" placeholder="请输入验证码"
autocomplete="off" class="layui-input">
</div>
<div class="layui-input-inline"><img
@ -55,8 +56,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="button" value="注册" id="btnRegister" class="layui-btn" />
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<input type="button" value="注册" id="btnRegister" class="layui-btn"/>
<a class="layui-btn layui-btn-primary" href="/user/login.html">登录</a>
</div>
</div>
</form>
@ -68,9 +69,8 @@
<div th:replace="mobile/common/js :: js">
</div>
<script type="text/javascript">
$("#form1").css("min-height",($(window).height() - 140)+"px")
$("#chkd").click();
$("#btnRegister").click(function () {
var username = $("#txtUName").val();
if (username.isBlank()) {
@ -94,12 +94,12 @@
$.ajax({
type: "POST",
url: "/user/register",
data: {"username": username, "password": password,"velCode":velCode},
data: {"username": username, "password": password, "velCode": velCode},
dataType: "json",
success: function (data) {
if (data.code == 200) {
$.cookie('Authorization', data.data.token, {path: '/'});
window.location.href="/";
window.location.href = "/";
} else {
layer.alert(data.msg);
}
@ -111,6 +111,7 @@
})
})
//获取验证码
function getVerify(obj) {
obj.src = "/file/getVerify?" + Math.random();
@ -118,5 +119,4 @@
</script>
</html>

View File

@ -213,7 +213,6 @@
<script>
$("#body").css("min-height", ($(window).height() - 60) + "px")
//查询用户信息
$.ajax({
@ -244,7 +243,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'充值_'+${application.website.name}"></title>
@ -20,39 +19,51 @@
<div class="payBox cf">
<div class="payHead cf">
<div class="fl">
充值账号<span class="user_name" id="my_name"></span>余额:<em class="red" id="accountBalance">0</em>屋币<!--<em class="red">+0</em>代金券-->
充值账号<span class="user_name" id="my_name"></span>余额:<em class="red" id="accountBalance">0</em>屋币
<!--<em class="red">+0</em>代金券-->
</div>
</div>
<div class="payCon">
<h5>选择充值方式</h5>
<ul class="pay_way cf" id="ulPayType">
<li class="on" valp="1"><img class="pay_pic" src="../images/pay_zfb.png" alt="支付宝支付" /></li>
<li valp="2"><img class="pay_pic" src="../images/pay_wx.png" alt="微信支付" /></li>
<li class="on" valp="1"><img class="pay_pic" src="../images/pay_zfb.png" alt="支付宝支付"/></li>
<li valp="2"><img class="pay_pic" src="../images/pay_wx.png" alt="微信支付"/></li>
</ul>
<h5>选择充值金额</h5>
<ul class="pay_way cf" id="ulZFWX">
<li vals="10"><strong>10元</strong><span class="pay_mn">1000屋币</span></li>
<li vals="30"><strong>30元</strong><span class="pay_mn">3000屋币</span></li>
<li vals="50"><strong>50元</strong><span class="pay_mn">5000屋币<!--<em class="red">+ 送500代金券</em>--></span></li>
<li vals="100"><strong>100元</strong><span class="pay_mn">10000屋币<!--<em class="red">+ 送1200代金券</em>--></span></li>
<li vals="200"><strong>200元</strong><span class="pay_mn">20000屋币<!--<em class="red">+ 送3000代金券</em>--></span></li>
<li vals="500"><strong>500元</strong><span class="pay_mn">50000屋币<!--<em class="red">+ 送10000代金券</em>--></span></li>
<li vals="50"><strong>50元</strong><span class="pay_mn">5000屋币
<!--<em class="red">+ 送500代金券</em>--></span></li>
<li vals="100"><strong>100元</strong><span class="pay_mn">10000屋币
<!--<em class="red">+ 送1200代金券</em>--></span></li>
<li vals="200"><strong>200元</strong><span class="pay_mn">20000屋币
<!--<em class="red">+ 送3000代金券</em>--></span></li>
<li vals="500"><strong>500元</strong><span class="pay_mn">50000屋币
<!--<em class="red">+ 送10000代金券</em>--></span></li>
</ul>
<ul class="pay_way cf" style="display:none;" id="ulPayPal">
<li vals="20"><strong>20美元</strong><span class="pay_mn">10000屋币</span></li>
<li vals="50" class="on"><strong>50美元</strong><span class="pay_mn">25000屋币<em class="red"></em></span></li>
<li vals="100"><strong>100美元</strong><span class="pay_mn">50000屋币<em class="red"></em></span></li>
<li vals="50" class="on"><strong>50美元</strong><span class="pay_mn">25000屋币<em class="red"></em></span>
</li>
<li vals="100"><strong>100美元</strong><span class="pay_mn">50000屋币<em class="red"></em></span>
</li>
</ul>
<ul class="pay_Checkout" id="ulZFWXXJ">
<li>当前汇率1元=100屋币</li>
<li>总计金额<em class="red" id="showTotal">¥50元</em> 获得 <em class="red" id="showRemark">5000屋币<!--+500代金券--></em></li>
<li style="display:none"><a class="btn_red" href="pay_success.html" onclick="javascript:UserPay.sendPay();">立即支付</a></li>
<li>总计金额<em class="red" id="showTotal">¥50元</em> 获得 <em class="red" id="showRemark">5000屋币
<!--+500代金券--></em></li>
<li style="display:none"><a class="btn_red" href="pay_success.html"
onclick="javascript:UserPay.sendPay();">立即支付</a></li>
</ul>
<ul class="pay_Checkout" style="display:none;" id="ulPayPalXJ">
<li>当前汇率1美元=500屋币</li>
<li>总计金额<em class="red" id="showPayPalTotal">50美元</em> 获得 <em class="red" id="showPayPalRemark">25000屋币</em></li>
<li style="display:none"><a class="btn_red" href="javascript:void(0);" onclick="javascript:UserPay.sendPay();">立即支付</a></li>
<li>总计金额<em class="red" id="showPayPalTotal">50美元</em> 获得 <em class="red"
id="showPayPalRemark">25000屋币</em>
</li>
<li style="display:none"><a class="btn_red" href="javascript:void(0);"
onclick="javascript:UserPay.sendPay();">立即支付</a></li>
</ul>
</div>
<div class="payFoot">
@ -68,7 +79,7 @@
</div>
</div>
<input type="hidden" id="pValue" name="payAmount" />
<input type="hidden" id="pValue" name="payAmount"/>
</form>
@ -80,7 +91,6 @@
<script type="text/javascript">
//查询用户信息
$.ajax({
type: "get",
@ -89,9 +99,9 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.nickName){
if (data.data.nickName) {
$("#my_name").html(data.data.nickName);
}else{
} else {
$("#my_name").html(data.data.username);
}
@ -99,7 +109,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -115,9 +125,9 @@
var payType = $("#ulPayType").find("li.on").attr("valp");
if(payType == 2){
if (payType == 2) {
layer.alert("微信支付暂未开通,敬请期待");
return ;
return;
}
$("#pValue").val($(this).attr("vals"));
@ -125,9 +135,6 @@
$("#payform").submit();
});
</script>

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的书评_'+${application.website.name}"></title>
@ -54,24 +55,24 @@
$.ajax({
type: "get",
url: "/user/listCommentByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var commentList = data.data.list;
if (commentList.length > 0) {
$("#bookCommentTotal").html("("+data.data.total+"条)");
$("#bookCommentTotal").html("(" + data.data.total + "条)");
var commentListHtml = "";
for (var i = 0; i < commentList.length; i++) {
var comment = commentList[i];
commentListHtml += ("<div class=\"comment_list cf\">" +
"<div class=\"user_heads fl\" vals=\"389\">" +
"<img src=\""+(comment.createUserPhoto ? comment.createUserPhoto : '/images/man.png')+"\" class=\"user_head\" alt=\"\">" +
"<img src=\"" + (comment.createUserPhoto ? comment.createUserPhoto : '/images/man.png') + "\" class=\"user_head\" alt=\"\">" +
"<span class=\"user_level1\" style=\"display: none;\">见习</span></div>" +
"<ul class=\"pl_bar fr\">\t\t\t<li class=\"name\">"+(comment.createUserName.substr(0, 4) + "****" + comment.createUserName.substr(comment.createUserName.length - 3, 3))+"</li><li class=\"dec\">" +
comment.commentContent+
"<ul class=\"pl_bar fr\">\t\t\t<li class=\"name\">" + (comment.createUserName.substr(0, 4) + "****" + comment.createUserName.substr(comment.createUserName.length - 3, 3)) + "</li><li class=\"dec\">" +
comment.commentContent +
"</li><li class=\"other cf\">" +
"<span class=\"time fl\">"+comment.createTime+"</span>" +
"<span class=\"time fl\">" + comment.createTime + "</span>" +
"<span class=\"fr\"><a href=\"javascript:void(0);\" onclick=\"javascript:BookDetail.AddAgreeTotal(77,this);\" class=\"zan\" style=\"display: none;\">赞<i class=\"num\">(0)</i></a>" +
"</span></li>\t\t</ul>\t</div>");
}
@ -109,9 +110,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -1,11 +1,13 @@
<!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 th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'我的书架_'+${application.website.name}"></title>
<meta name="keywords" th:content="'我的书架,个人中心,'+${application.website.name}+'小说,'+${application.website.name}" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/user.css" />
<meta name="keywords" th:content="'我的书架,个人中心,'+${application.website.name}+'小说,'+${application.website.name}"/>
<meta name="description"
th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'"/>
<link rel="stylesheet" href="/css/user.css"/>
</head>
</head>
<body class="">
@ -29,7 +31,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl"><a href="javascript:void(0);" class="red">我的书架</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/user/read_history.html" >最近阅读</a></h2>
<h2 class="fl"><a href="javascript:void(0);" class="red">我的书架</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/user/read_history.html">最近阅读</a></h2>
</div>
<div id="divData" class="updateTable">
@ -56,7 +60,6 @@
<tbody id="bookShelfList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -82,31 +85,31 @@
$.ajax({
type: "get",
url: "/user/listBookShelfByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookShelfList = data.data.list;
if (bookShelfList.length > 0) {
var bookShelfListHtml = "";
for(var i=0;i<bookShelfList.length;i++){
for (var i = 0; i < bookShelfList.length; i++) {
var book = bookShelfList[i];
bookShelfListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
bookShelfListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >["+book.catName+"]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/"+book.bookId+".html\">\n" +
" "+book.bookName+"</a>\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +
" " + book.bookName + "</a>\n" +
" </td>\n" +
" <td class=\"chapter\" valsc=\"291|2037554|1\">\n" +
"<a href='/book/"+book.bookId+"/"+book.lastIndexId+".html'>"+book.lastIndexName+"</a>"+
"<a href='/book/" + book.bookId + "/" + book.lastIndexId + ".html'>" + book.lastIndexName + "</a>" +
" </td>\n" +
" <td class=\"time\">\n" +
" "+book.lastIndexUpdateTime+"\n" +
" " + book.lastIndexUpdateTime + "\n" +
" </td>\n" +
" <td class=\"goread\">\n" +
"<a href='/book/"+book.bookId+"/"+book.preContentId+".html'>继续阅读</a>"+
"<a href='/book/" + book.bookId + "/" + book.preContentId + ".html'>继续阅读</a>" +
" </td>\n" +
" </tr>");
}
@ -144,9 +147,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -74,7 +74,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的反馈_'+${application.website.name}"></title>
@ -34,8 +33,6 @@
<dd id="feedbackList">
</dd>
</dl>
<div class="cf">
@ -61,7 +58,7 @@
$.ajax({
type: "get",
url: "/user/listUserFeedBackByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -71,8 +68,8 @@
for (var i = 0; i < feedbackList.length; i++) {
var feedback = feedbackList[i];
feedbackListHtml += (" <div class=\"comment_list clear\" ><ul>\n" +
" <li class=\"li_1\"><span class=\"user_name fl\"></span><span class=\"time fl\">"+feedback.createTime+"</span></li>\n" +
" <li class=\"li_2\">"+feedback.content+"</li>\n" +
" <li class=\"li_1\"><span class=\"user_name fl\"></span><span class=\"time fl\">" + feedback.createTime + "</span></li>\n" +
" <li class=\"li_2\">" + feedback.content + "</li>\n" +
" </ul></div>");
}
$("#feedbackList").html(feedbackListHtml);
@ -109,9 +106,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'最近阅读_'+${application.website.name}"></title>
@ -13,7 +14,9 @@
<div class="viewhistoryBox">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="javascript:void(0);" class="red">最近阅读</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/user/favorites.html">我的书架</a></h2>
<h2 class="fl ml10"><a href="javascript:void(0);" class="red">最近阅读</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/user/favorites.html">我的书架</a></h2>
</div>
<div id="divData" class="updateTable">
<table cellpadding="0" cellspacing="0">
@ -69,31 +72,31 @@
$.ajax({
type: "get",
url: "/user/listReadHistoryByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookHistoryList = data.data.list;
if (bookHistoryList.length > 0) {
var bookHistoryListHtml = "";
for(var i=0;i<bookHistoryList.length;i++){
for (var i = 0; i < bookHistoryList.length; i++) {
var book = bookHistoryList[i];
bookHistoryListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
bookHistoryListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >["+book.catName+"]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/"+book.bookId+".html\">\n" +
" "+book.bookName+"</a>\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +
" " + book.bookName + "</a>\n" +
" </td>\n" +
" <td class=\"chapter\" valsc=\"291|2037554|1\">\n" +
"<a href='/book/"+book.bookId+"/"+book.lastIndexId+".html'>"+book.lastIndexName+"</a>"+
"<a href='/book/" + book.bookId + "/" + book.lastIndexId + ".html'>" + book.lastIndexName + "</a>" +
" </td>\n" +
" <td class=\"time\">\n" +
" "+book.lastIndexUpdateTime+"\n" +
" " + book.lastIndexUpdateTime + "\n" +
" </td>\n" +
" <td class=\"goread\">\n" +
"<a href='/book/"+book.bookId+"/"+book.preContentId+".html'>继续阅读</a>"+
"<a href='/book/" + book.bookId + "/" + book.preContentId + ".html'>继续阅读</a>" +
" </td>\n" +
" </tr>");
}
@ -131,9 +134,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -27,7 +27,7 @@
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的昵称</i><input name="txtNiceName" type="text" value="15171695474"
maxlength="20" id="txtNiceName" class="s_input"
maxlength="11" id="txtNiceName" class="s_input"
placeholder=""/></li>
<li><i class="tit">&nbsp;</i>用户名只能包括汉字、英文字母、数字和下划线</li>
<li><i class="tit">&nbsp;</i><input type="button" onclick="updateName()" name="btn" value="修改"
@ -61,7 +61,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -96,7 +96,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
$("#LabErr").html(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改密码_'+${application.website.name}"></title>
@ -24,13 +25,18 @@
<div class="my_r">
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的密码</i><input name="oldPass" type="password" id="txtOldPass" class="s_input" placeholder="请输入原密码" /></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass1" type="password" id="txtNewPass1" class="s_input" placeholder="请输入新密码" /></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass2" type="password" id="txtNewPass2" class="s_input" placeholder="请确认新密码" /></li>
<li><i class="tit">&nbsp;</i><input type="submit" name="btnExchangePassword" value="修改" id="btnExchangePassword" onclick="updatePassword()" class="s_btn btn_red" /></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
<ul class="mytab_list">
<li><i class="tit">我的密码</i><input name="oldPass" type="password" id="txtOldPass" class="s_input"
placeholder="请输入原密码"/></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass1" type="password" id="txtNewPass1"
class="s_input" placeholder="请输入新密码"/></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass2" type="password" id="txtNewPass2"
class="s_input" placeholder="请确认新密码"/></li>
<li><i class="tit">&nbsp;</i><input type="submit" name="btnExchangePassword" value="修改"
id="btnExchangePassword" onclick="updatePassword()"
class="s_btn btn_red"/></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
</div>
</div>
</div>
@ -57,14 +63,14 @@
$("#LabErr").html("确认密码不能为空!");
return;
}
if(newPassword1 !== newPassword2){
if (newPassword1 !== newPassword2) {
$("#LabErr").html("两次输入的新密码不匹配!");
return;
}
$.ajax({
type: "POST",
url: "/user/updatePassword",
data: {'oldPassword':oldPassword,'newPassword1':newPassword1,'newPassword2':newPassword2},
data: {'oldPassword': oldPassword, 'newPassword1': newPassword1, 'newPassword2': newPassword2},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -72,7 +78,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
$("#LabErr").html(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改性别_'+${application.website.name}"></title>
@ -24,14 +25,16 @@
<div class="my_r">
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的性别</i>
<label><input type="radio" name="sex" value="0" />&nbsp;男生</label>
<label><input class="ml20" type="radio" name="sex" value="1" checked />&nbsp;女生</label>
</li>
<li class="mt20"><i class="tit">&nbsp;</i><input type="button" onclick="updateSex()" name="btn" value="修改" id="btn" class="s_btn btn_red" /></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
<ul class="mytab_list">
<li><i class="tit">我的性别</i>
<label><input type="radio" name="sex" value="0"/>&nbsp;男生</label>
<label><input class="ml20" type="radio" name="sex" value="1" checked/>&nbsp;女生</label>
</li>
<li class="mt20"><i class="tit">&nbsp;</i><input type="button" onclick="updateSex()" name="btn"
value="修改" id="btn" class="s_btn btn_red"/>
</li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
</div>
</div>
</div>
@ -50,15 +53,14 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userSex === '0'){
$("input[name=sex]").eq(0).attr("checked",true);
if (data.data.userSex === '0') {
$("input[name=sex]").eq(0).attr("checked", true);
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -69,11 +71,12 @@
layer.alert('网络异常');
}
})
function updateSex() {
$.ajax({
type: "POST",
url: "/user/updateUserInfo",
data: {'userSex':$("input[name=sex]:checked").val()},
data: {'userSex': $("input[name=sex]:checked").val()},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -81,7 +84,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'账号设置_'+${application.website.name}"></title>
@ -25,10 +26,12 @@
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li ><i class="tit">我的头像</i>
<a style="position: relative" >
<img id="imgLogo" class="user_img" alt="我的头像" src="/images/man.png" />
<input class="opacity" onchange="picChange()" type="file" id="file0" name="file" title="点击上传图片" style="z-index: 100;cursor: pointer;left: 0px; top: -25px; width: 60px; height: 80px; opacity: 0; position: absolute; "/>
<li><i class="tit">我的头像</i>
<a style="position: relative">
<img id="imgLogo" class="user_img" alt="我的头像" src="/images/man.png"/>
<input class="opacity" onchange="picChange()" type="file" id="file0" name="file"
title="点击上传图片"
style="z-index: 100;cursor: pointer;left: 0px; top: -25px; width: 60px; height: 80px; opacity: 0; position: absolute; "/>
</a>
@ -59,27 +62,26 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userPhoto){
$("#imgLogo").attr("src",data.data.userPhoto);
if (data.data.userPhoto) {
$("#imgLogo").attr("src", data.data.userPhoto);
}
if(data.data.nickName){
$("#my_name").html(data.data.nickName+"<em class=\"ml10\">[修改]</em>");
}else{
$("#my_name").html(data.data.username+"<em class=\"ml10\">[修改]</em>");
if (data.data.nickName) {
$("#my_name").html(data.data.nickName + "<em class=\"ml10\">[修改]</em>");
} else {
$("#my_name").html(data.data.username + "<em class=\"ml10\">[修改]</em>");
}
if(data.data.userSex === '0'){
if (data.data.userSex === '0') {
$("#my_sex").html("男<em class=\"ml10\">[修改]</em>");
}else if(data.data.userSex === '1'){
} else if (data.data.userSex === '1') {
$("#my_sex").html("女<em class=\"ml10\">[修改]</em>");
}else{
} else {
$("#my_sex").html("请选择");
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -96,7 +98,7 @@
var file = $("#file0").val(); //文件名称
if (file != "") {
if(checkPicUpload($("#file0")[0])) {
if (checkPicUpload($("#file0")[0])) {
$.ajaxFileUpload({
url: "/file/picUpload", //用于文件上传的服务器端请求地址
@ -118,7 +120,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -143,7 +145,6 @@
}
}
</script>
</body>

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'个人中心_'+${application.website.name}"></title>
@ -25,12 +24,14 @@
</div>
<div class="my_r">
<div class="my_info cf">
<img id="imgLogo" class="user_big_head" src="/images/man.png" />
<img id="imgLogo" class="user_big_head" src="/images/man.png"/>
<div class="my_info_txt">
<p class="my_name" id="my_name">
</p>
</p>
<ul class="my_list">
<li class="my_gold"><i>账户余额:</i><em class="red" id="accountBalance">0</em>屋币<!--<em class="red">+</em><em class="red">0</em>代金券--><a href="/pay/index.html" class="btn_link">立即充值</a></li>
<li class="my_gold"><i>账户余额:</i><em class="red" id="accountBalance">0</em>屋币
<!--<em class="red">+</em><em class="red">0</em>代金券--><a href="/pay/index.html"
class="btn_link">立即充值</a></li>
<li class="my_baonian"></li>
</ul>
@ -87,12 +88,12 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userPhoto){
$("#imgLogo").attr("src",data.data.userPhoto);
if (data.data.userPhoto) {
$("#imgLogo").attr("src", data.data.userPhoto);
}
if(data.data.nickName){
if (data.data.nickName) {
$("#my_name").html(data.data.nickName);
}else{
} else {
$("#my_name").html(data.data.username);
}
@ -100,7 +101,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -115,7 +116,7 @@
$.ajax({
type: "get",
url: "/user/listBookShelfByPage",
data: {'limit':2},
data: {'limit': 2},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -126,7 +127,7 @@
var book = bookShelfList[i];
bookShelfListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >[" + book.catName + "]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +

View File

@ -5,7 +5,7 @@
<groupId>com.java2nb</groupId>
<artifactId>novel</artifactId>
<version>4.3.0-RC1</version>
<version>4.3.0</version>
<modules>
<module>novel-common</module>
<module>novel-front</module>

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,14 +7,15 @@
<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 class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
@ -37,7 +38,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="/author/author_income_detail.html">订阅明细</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/author/author_income.html" class="red">稿费汇总</a></h2>
<h2 class="fl ml10"><a href="/author/author_income_detail.html">订阅明细</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/author/author_income.html" class="red">稿费汇总</a></h2>
</div>
<div id="divData" class="updateTable">
@ -62,7 +65,6 @@
<tbody id="bookList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -120,24 +122,24 @@
$.ajax({
type: "get",
url: "/author/listIncomeMonthByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookList = data.data.list;
if (bookList.length > 0) {
var bookListHtml = "";
for(var i=0;i<bookList.length;i++){
for (var i = 0; i < bookList.length; i++) {
var book = bookList[i];
bookListHtml+=(" <tr class=\"book_list\" >\n" +
bookListHtml += (" <tr class=\"book_list\" >\n" +
" <td class=\"goread\">\n" +
" "+book.incomeMonth+"</td>\n" +
" " + book.incomeMonth + "</td>\n" +
" <td class=\"goread\" >"
+book.preTaxIncome/100+"</td>\n" +
+ book.preTaxIncome / 100 + "</td>\n" +
" <td class=\"goread\">\n" +
" "+book.afterTaxIncome/100+"\n" +
" " + book.afterTaxIncome / 100 + "\n" +
" </td>\n" +
" <td class=\"goread\">"+(book.payStatus == 1 ? '已支付' : '待支付')+
" <td class=\"goread\">" + (book.payStatus == 1 ? '已支付' : '待支付') +
" </td>\n" +
" </tr>");
@ -176,9 +178,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -191,12 +193,12 @@
}
function updateBookStatus(bookId,status) {
function updateBookStatus(bookId, status) {
$.ajax({
type: "POST",
url: "/author/updateBookStatus",
data: {'bookId':bookId,'status':status==0?1:0},
data: {'bookId': bookId, 'status': status == 0 ? 1 : 0},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -206,9 +208,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -219,9 +221,6 @@
})
}
</script>
</html>

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,14 +7,15 @@
<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 class="box_center cf"
style="text-align: center;height: 44px;line-height: 48px;color: #fff;font-size: 16px;">
小说精品屋作家管理
@ -37,7 +38,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="/author/author_income_detail.html" class="red">订阅明细</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/author/author_income.html">稿费汇总</a></h2>
<h2 class="fl ml10"><a href="/author/author_income_detail.html" class="red">订阅明细</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/author/author_income.html">稿费汇总</a></h2>
</div>
<div id="divData" class="updateTable">
@ -61,7 +64,6 @@
<tbody id="bookList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -117,9 +119,9 @@
function search(curr, limit) {
var data = {'curr':curr,'limit':limit};
var data = {'curr': curr, 'limit': limit};
if(bookId){
if (bookId) {
data.bookId = bookId;
}
@ -133,17 +135,17 @@
var bookList = data.data.list;
if (bookList.length > 0) {
var bookListHtml = "";
for(var i=0;i<bookList.length;i++){
for (var i = 0; i < bookList.length; i++) {
var book = bookList[i];
bookListHtml+=(" <tr class=\"book_list\" >\n" +
bookListHtml += (" <tr class=\"book_list\" >\n" +
" <td class=\"goread\">\n" +
" "+book.incomeDate+"</td>\n" +
" " + book.incomeDate + "</td>\n" +
" <td class=\"goread\" >"
+book.incomeAccount+"</td>\n" +
+ book.incomeAccount + "</td>\n" +
" <td class=\"goread\">\n" +
" "+book.incomeCount+"\n" +
" " + book.incomeCount + "\n" +
" </td>\n" +
" <td class=\"goread\">"+book.incomeNumber+
" <td class=\"goread\">" + book.incomeNumber +
" </td>\n" +
" </tr>");
@ -182,9 +184,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -197,12 +199,12 @@
}
function updateBookStatus(bookId,status) {
function updateBookStatus(bookId, status) {
$.ajax({
type: "POST",
url: "/author/updateBookStatus",
data: {'bookId':bookId,'status':status==0?1:0},
data: {'bookId': bookId, 'status': status == 0 ? 1 : 0},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -212,9 +214,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}
@ -225,9 +227,6 @@
})
}
</script>
</html>

View File

@ -231,7 +231,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -261,7 +261,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -213,7 +213,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -300,7 +300,7 @@
layer.close(index);
$.ajax({
type: "delete",
url: "/author/deleteIndex/"+indexId,
url: "/author/deleteIndex/" + indexId,
data: {},
dataType: "json",
success: function (data) {
@ -311,7 +311,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -380,7 +380,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -2,10 +2,10 @@
<div class="box_center cf">
<div class="copyright">
<ul>
<li class="menu"><a href="/?to=mobile">手机站</a><i class="line">|</i><a href="/">网站首页</a><i
<li class="menu"><!--<a href="/?to=mobile">手机站</a><i class="line">|</i>--><a href="/">网站首页</a><i
class="line">|</i><a href="/user/feedback.html">反馈留言</a><i class="line">|</i><a
href="/author/index.html">作家专区</a><i class="line">|</i><a
href="/mobile/fiction_house.apk">客户端</a></li>
href="/author/index.html">作家专区</a><!--<i class="line">|</i><a
href="/mobile/fiction_house.apk">客户端</a>--></li>
<li th:text="'Copyright (C) '+${application.website.domain}+' All rights reserved&nbsp;&nbsp;'+${application.website.name}+'版权所有'"></li>
</ul>

View File

@ -161,11 +161,6 @@
text-align: center;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
@ -210,6 +205,26 @@
字体<a id="fontbig" class="sizebg" onclick="nr_setbg('big')">大</a> <a id="fontmiddle" class="button sizebgon"
onclick="nr_setbg('middle')"></a> <a
id="fontsmall" class="sizebg" onclick="nr_setbg('small')">小</a>
<a href="javascript:speakChapter()" style="margin-left: 10px">
<svg t="1707099868768" class="icon" viewBox="0 0 800 800" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="1783" id="mx_n_1707099868769" width="22" height="22">
<path d="M393.707231 292.571429L343.13933 487.619048l46.955908 234.779541-97.523809-45.149912-66.82187-108.359788-21.671958-86.687831 66.82187-113.777778z"
fill="#3eaf7c" p-id="1784"></path>
<path d="M451.499118 509.291005a104.747795 61.40388 90 1 0 122.80776 0 104.747795 61.40388 90 1 0-122.80776 0Z"
fill="#3eaf7c" p-id="1785"></path>
<path d="M426.215168 781.996473c-3.611993 0-7.223986-1.805996-10.835979-3.611993l-117.389771-86.687831c-36.119929-23.477954-65.015873-57.791887-83.075838-99.329806-10.835979-25.283951-16.253968-52.373898-16.253968-81.269841s5.417989-55.985891 16.253968-81.269842c16.253968-41.537919 45.149912-74.045855 83.075838-97.523809l110.165785-77.657848c9.029982-5.417989 19.865961-3.611993 25.28395 3.611993 5.417989 9.029982 3.611993 19.865961-3.611993 25.28395L319.661376 361.199295c-32.507937 19.865961-55.985891 48.761905-70.433863 81.269841-9.029982 21.671958-14.447972 45.149912-14.447972 68.627866 0 23.477954 3.611993 45.149912 12.641976 66.821869 14.447972 34.313933 37.925926 63.209877 68.627866 83.075838l117.38977 86.687831c7.223986 5.417989 9.029982 18.059965 3.611993 25.28395 0 5.417989-5.417989 9.029982-10.835978 9.029983z"
fill="#3eaf7c" p-id="1786"></path>
<path d="M523.738977 830.758377c-108.359788 0-193.241623-140.867725-193.241623-317.855379S415.379189 193.241623 523.738977 193.241623c25.283951 0 50.567901 7.223986 74.045855 23.477954 9.029982 5.417989 10.835979 16.253968 5.41799 25.28395s-16.253968 10.835979-25.283951 5.41799c-18.059965-10.835979-34.313933-18.059965-54.179894-18.059965-84.881834 0-157.121693 130.031746-157.121693 281.73545S438.857143 794.638448 523.738977 794.638448s157.121693-130.031746 157.121693-281.73545c0-74.045855-16.253968-146.285714-46.955908-198.659612-5.417989-9.029982-1.805996-19.865961 7.223986-25.28395 9.029982-5.417989 19.865961-1.805996 25.28395 7.223986 32.507937 59.597884 50.567901 135.449735 50.567902 216.719576C718.786596 689.890653 633.904762 830.758377 523.738977 830.758377z"
fill="#3eaf7c" p-id="1787"></path>
<path d="M523.738977 646.546737c-48.761905 0-86.687831-59.597884-86.687831-133.643739S474.977072 379.259259 523.738977 379.259259s86.687831 59.597884 86.687831 133.643739-37.925926 133.643739-86.687831 133.643739z m0-232.973545c-23.477954 0-50.567901 39.731922-50.567901 97.52381s27.089947 97.52381 50.567901 97.523809 50.567901-39.731922 50.567901-97.523809-27.089947-97.52381-50.567901-97.52381z"
fill="#3eaf7c" p-id="1788"></path>
<path d="M523.738977 413.573192h-1.805996l-92.105821-10.835979c-9.029982-1.805996-16.253968-10.835979-16.253968-19.865961 1.805996-9.029982 10.835979-16.253968 19.865961-16.253968l92.105821 10.835979c9.029982 1.805996 16.253968 10.835979 16.253968 19.865961 0 9.029982-9.029982 16.253968-18.059965 16.253968zM372.035273 662.800705c-9.029982 0-16.253968-7.223986-18.059964-16.253968-1.805996-9.029982 5.417989-18.059965 16.253968-19.865961l153.5097-16.253968c9.029982-1.805996 18.059965 5.417989 19.865961 16.253968 1.805996 9.029982-5.417989 18.059965-16.253968 19.865961l-153.5097 16.253968h-1.805997z"
fill="#3eaf7c" p-id="1789"></path>
<path d="M763.936508 364.811287c-5.417989 0-9.029982-1.805996-12.641975-5.417989-7.223986-7.223986-7.223986-18.059965 0-25.283951l25.28395-25.28395c7.223986-7.223986 18.059965-7.223986 25.283951 0s7.223986 18.059965 0 25.28395L776.578483 359.393298c-3.611993 3.611993-9.029982 5.417989-12.641975 5.417989zM771.160494 720.592593c-5.417989 0-9.029982-1.805996-12.641975-5.41799l-25.283951-25.28395c-7.223986-7.223986-7.223986-18.059965 0-25.283951s18.059965-7.223986 25.283951 0l25.28395 25.283951c7.223986 7.223986 7.223986 18.059965 0 25.28395-3.611993 3.611993-7.223986 5.417989-12.641975 5.41799zM819.922399 529.156966h-54.179895c-10.835979 0-18.059965-7.223986-18.059964-18.059964s7.223986-18.059965 18.059964-18.059965h54.179895c10.835979 0 18.059965 7.223986 18.059964 18.059965s-9.029982 18.059965-18.059964 18.059964z"
fill="#3eaf7c" p-id="1790"></path>
</svg>
</a>
</p>
<div class="indexDiv" style="height: 42px;line-height: 42px;text-align:center;background: #f2f2f2">
@ -241,7 +256,7 @@
</div>
<div id="chaptercontent" class="Readarea ReadAjax_content screen_container"
style="color: rgb(0, 0, 0); font-size: 20px;" th:if="${!needBuy}">
<p style="width:100%;text-alight:center; overflow: auto;-webkit-overflow-scrolling:touch;">&nbsp;&nbsp;&nbsp;&nbsp;
<p style="width:100%;text-alight:center; overflow: auto;-webkit-overflow-scrolling:touch;">
<span
th:utext="${bookContent.content}"></span></p>
</div>
@ -300,8 +315,6 @@
}
})
$("#content").css("min-height", ($(window).height() - 60) + "px");
})();
@ -352,7 +365,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
@ -389,6 +402,79 @@
}
console.log(speechSynthesis.getVoices());
$(window).on('beforeunload', function () {
if (speechSynthesis.speaking) {
speechSynthesis.cancel()
}
});
function speakChapter() {
console.log('speechSynthesis.paused', speechSynthesis.paused)
console.log('speechSynthesis.pending', speechSynthesis.pending)
console.log('speechSynthesis.speaking', speechSynthesis.speaking)
if (speechSynthesis.speaking && !speechSynthesis.paused) {
speechSynthesis.pause();
return;
}
if (speechSynthesis.speaking && speechSynthesis.paused) {
speechSynthesis.resume();
}
speak({
'text': $('#chaptercontent').text(),
'speechRate': 0.5,
'pitch': 1,
'lang': 'zh-CN'
}, function () {
console.log('语音播放结束');
}, function () {
console.log('语音开始播放');
});
}
/**
* @description 文字转语音方法
* @public
* @param { text, rate, lang, volume, pitch } object
* @param text 要合成的文字内容字符串
* @param speechRate 读取文字的语速 0.1~10 正常1
* @param lang 读取文字时的语言
* @param volume 读取时声音的音量 0~1 正常1
* @param voice 读取文字的语音服务
* @param pitch 读取时声音的音高 0~2 正常1
* @returns SpeechSynthesisUtterance
*/
function speak({text, speechRate, lang, volume, pitch, voice}, endEvent, startEvent) {
if (!window.SpeechSynthesisUtterance) {
console.warn('当前浏览器不支持文字转语音服务')
return;
}
if (!text) {
return;
}
const speechUtterance = new SpeechSynthesisUtterance();
speechUtterance.text = text;
speechUtterance.rate = speechRate || 1;
speechUtterance.lang = lang || 'zh-CN';
speechUtterance.volume = volume || 1;
speechUtterance.pitch = pitch || 1;
speechUtterance.voice = voice || null;
speechUtterance.onend = function () {
endEvent && endEvent();
};
speechUtterance.onstart = function () {
startEvent && startEvent();
};
speechSynthesis.speak(speechUtterance);
return speechUtterance;
}
</script>

View File

@ -274,7 +274,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -289,8 +289,6 @@
}
$("#content").css("min-height", ($(window).height() - 60) + "px");
function downloadFile() {
var fileUrl = '/book/download?bookId=' + $("#bookIdHidden").val() + '&bookName=' + $("#bookNamedHidden").val();
window.location.href = fileUrl;

View File

@ -36,41 +36,43 @@
</div>
</head>
<body>
<div id="content">
<input type="hidden" id="bookIdHidden" th:value="${book.id}"/>
<div style="height: 50px;line-height: 50px;text-align: center" class="layui-header header header-doc layui-bg-cyan">
<input type="hidden" id="bookIdHidden" th:value="${book.id}"/>
<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: #fff;" class="layui-icon">&#xe65c;</i></a>
<div style="float: left;margin-left: 10px">
<a href="javascript:history.go(-1)">
<i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe65c;</i></a>
</div>
<a style="color: #ffffff;" th:href="'/book/'+ ${book.id} + '.html'"><b class="layui-icon"
th:utext="${book.bookName}"></b></a>
<div style="float: right;margin-right: 10px">
<a href="/"><i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe68e;</i></a>
</div>
</div>
<a style="color: #ffffff;" th:href="'/book/'+ ${book.id} + '.html'"><b class="layui-icon" th:utext="${book.bookName}"></b></a>
<div style="float: right;margin-right: 10px">
<a href="/"><i style="font-size: 20px;color: #fff;" class="layui-icon">&#xe68e;</i></a>
</div>
</div>
<p style="height: 30px;line-height: 30px;padding: 10px">
<p style="height: 30px;line-height: 30px;padding: 10px">
<a href="#buttom" style="color: red">&nbsp;&nbsp;直达页面底部</a>
</p>
<div class="layui-colla-content layui-show indexP layui-row">
<p class="line-limit-length layui-col-xs12 layui-col-sm4 layui-col-md3 layui-col-lg2" style="padding-left:10px;height: 50px;line-height: 50px;" th:each="index : ${bookIndexList}">
<a style="color:#333;" th:href="'/book/'+${index.bookId}+'/'+${index.id}+'.html'" th:utext="${index.indexName}">
</a>
<a href="#buttom" style="color: red">&nbsp;&nbsp;直达页面底部</a>
</p>
<div class="layui-colla-content layui-show indexP layui-row">
<p class="line-limit-length layui-col-xs12 layui-col-sm4 layui-col-md3 layui-col-lg2"
style="padding-left:10px;height: 50px;line-height: 50px;" th:each="index : ${bookIndexList}">
<a style="color:#333;" th:href="'/book/'+${index.bookId}+'/'+${index.id}+'.html'"
th:utext="${index.indexName}">
</div>
</a>
</p>
</div>
</div>
<div th:replace="mobile/common/footer :: footer">
</div>
@ -80,13 +82,14 @@
<div th:replace="mobile/common/js :: js">
</div>
<script>
$("#content").css("min-height",($(window).height()-60)+"px");
$.get("/book/addVisit",{"bookId":$("#bookIdHidden").val()},function(){});
function toMyCollect(){
$.get("/book/addVisit", {"bookId": $("#bookIdHidden").val()}, function () {
});
function toMyCollect() {
var token = localStorage.getItem("token");
if(token) {
if (token) {
window.location.href = "/book/search?token=" + token;
}else{
} else {
window.location.href = "/user/login.html";
}
}

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>

View File

@ -1,6 +1,11 @@
<div th:fragment="css">
<link rel="stylesheet" href="/mobile/layui/css/layui.css">
<style type="text/css">
body {
min-height: 100vh;
position: relative;
}
.app {
display: none;
}
@ -22,9 +27,12 @@
}
#footer {
padding-top: 6px;
height: 60px;
line-height: 54px;
position: absolute;
bottom: 0px;
left: 0;
right: 0;
height: 50px;
line-height: 48px;
text-align: center;
}
</style>

View File

@ -1,15 +1,19 @@
<div th:fragment="footer" id="footer"
class="layui-footer footer footer-demo layui-bg-cyan">
<!--<a href="/mobile/book/searchSoftBook.html" style="font-size: 14px;color: #fff;">轻小说</a>
<a href="/mobile/book/searchSoftBook.html?catId=9" style="font-size: 14px;color: #fff;margin-left: 8px">漫画</a>-->
<a href="/?to=pc" style="font-size: 14px;color: #fff;margin-left: 8px">电脑站</a>
<a href="/user/read_history.html" style="font-size: 14px;color: #fff;margin-left: 8px">阅读记录</a>
<a href="/user/favorites.html" style="font-size: 14px;color: #fff;margin-left: 8px">书架</a>
<a href="/mobile/fiction_house.apk" style="font-size: 14px;color: #fff;margin-left: 8px">客户端</a>
<!--<a href="https://www.zinglizingli.xyz/me/index.html" style="font-size: 14px;color: #fff;margin-left: 8px">开发者</a>-->
<div th:fragment="footer">
<div style="height: 50px"></div>
<div id="footer"
class="layui-footer footer footer-demo layui-bg-cyan">
<!--<a href="/mobile/book/searchSoftBook.html" style="font-size: 14px;color: #fff;">轻小说</a>
<a href="/mobile/book/searchSoftBook.html?catId=9" style="font-size: 14px;color: #fff;margin-left: 8px">漫画</a>-->
<!--<a href="/?to=pc" style="font-size: 14px;color: #fff;margin-left: 8px">电脑站</a>-->
<a href="/" style="font-size: 16px;color: #fff;">首页</a>
<a href="/user/read_history.html" style="font-size: 16px;color: #fff;margin-left: 18px">阅读记录</a>
<a href="/user/favorites.html" style="font-size: 16px;color: #fff;margin-left: 18px">书架</a>
<!--<a href="/mobile/fiction_house.apk" style="font-size: 14px;color: #fff;margin-left: 8px">客户端</a>-->
<!--<a href="https://www.zinglizingli.xyz/me/index.html" style="font-size: 14px;color: #fff;margin-left: 8px">开发者</a>-->
<div style="float: right"><a href="#top"><i class="layui-icon"
style="margin-right:15px;font-size: 30px;color:#fff ">&#xe604;</i></a>
<div style="margin-top:-3px;float: right"><a href="#top"><i class="layui-icon"
style="margin-right:15px;font-size: 25px;color:#fff ">&#xe604;</i></a>
</div>
</div>
</div>

View File

@ -1,3 +1,3 @@
<script th:fragment="js" src="/mobile/js/jquery-1.9.1.js"></script>
<script th:fragment="js" src="/mobile/layui/layui.all.js"></script>
<script th:fragment="js" src="/mobile/js/common.js"></script>
<script th:fragment="js" src="/mobile/js/common.js?v2"></script>

View File

@ -41,18 +41,16 @@
}
.user_link {
position: relative;
display: inline-block;
vertical-align: middle;
line-height: 50px;
padding: 0 5px;
color: #fff;
line-height: 40px;
float: right;
color: #3eaf7c;
padding: 11px 12px 0;
}
.user_link a {
color: #fff;
color: #3eaf7c;
}
</style>
@ -64,92 +62,39 @@
<!-- 你的HTML代码 -->
<a name="top"></a>
<ul class="layui-nav app" lay-filter="" style="display:none;padding:0 10px;text-align: center">
<li class="layui-nav-item"><a>分类</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?catId=1&sort=last_index_update_time">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=2&sort=last_index_update_time">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=3&sort=last_index_update_time">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=4&sort=last_index_update_time">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=6&sort=last_index_update_time">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=5&sort=last_index_update_time">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?catId=7&sort=last_index_update_time">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>全本</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?bookStatus=1">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>排行</a>
<dl class="layui-nav-child">
<dd><a href="/book/book_ranking.html?sortBy=visit_count">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="user_link"></li>
<div style="height: 40px;">
<div style="line-height: 50px;width: 120px;float:left;padding-left: 10px"><img style="width: 150px;"
th:src="${application.website.logo}">
</div>
<div class="user_link">
<a style="padding-right: 3px" href="/user/favorites.html">
<svg t="1693622464904" class="icon" viewBox="0 0 1097 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="3653" width="23px" height="23px">
<path d="M998.58390632 852.14701166H126.84569332A41.51236 41.51236 0 0 0 85.33333332 893.65937166v62.26854a41.51236 41.51236 0 0 0 41.51236 41.51236h871.738213a41.51236 41.51236 0 0 0 41.51236-41.51236v-62.26854a41.51236 41.51236 0 0 0-41.51236-41.51236z m-29.293426 83.014048h-813.172704a8.537246 8.537246 0 0 1-8.537246-8.537246v-3.681687a8.537246 8.537246 0 0 1 8.537246-8.537247h813.172704a8.537246 8.537246 0 0 1 8.537246 8.537247v3.681687a8.537246 8.537246 0 0 1-8.537246 8.537246zM126.84569332 810.63465166h124.537079a41.51236 41.51236 0 0 0 41.51236-41.51236V229.47228566a41.51236 41.51236 0 0 0-41.51236-41.51236H126.84569332A41.51236 41.51236 0 0 0 85.33333332 229.47228566v539.650006a41.51236 41.51236 0 0 0 41.51236 41.51236zM156.72605532 246.49342066h64.883071a12.805869 12.805869 0 0 1 12.805869 12.805869v479.995998a12.805869 12.805869 0 0 1-12.805869 12.80587H156.72605532a12.805869 12.805869 0 0 1-12.80587-12.80587V259.29928966a12.805869 12.805869 0 0 1 12.80587-12.805869z m239.939305 564.141231h124.53708a41.51236 41.51236 0 0 0 41.51236-41.51236V278.62548066l291.653674 510.335237 0.266789 0.480221a41.619075 41.619075 0 0 0 56.826045 15.527116l107.932136-62.962191A42.600859 42.600859 0 0 0 1034.18422332 684.02729066L727.73976932 147.49337866l-0.266789-0.48022a41.619075 41.619075 0 0 0-56.826045-15.527116l-107.932135 62.962191V84.17902666A41.51236 41.51236 0 0 0 521.20244032 42.66666666h-124.53708a41.51236 41.51236 0 0 0-41.51236 41.51236v684.943265a41.51236 41.51236 0 0 0 41.51236 41.51236z m296.295802-597.938055a3.735045 3.735045 0 0 1 5.122348 1.376631l259.841761 454.608363a12.805869 12.805869 0 0 1-4.663471 17.415982l-56.271124 32.825712a12.805869 12.805869 0 0 1-17.544041-4.663471L624.11894332 267.59109066a12.805869 12.805869 0 0 1 4.663471-17.415983zM426.49236432 101.20016166h64.883072a12.805869 12.805869 0 0 1 12.805869 12.805869v625.289257a12.805869 12.805869 0 0 1-12.805869 12.80587h-64.883072a12.805869 12.805869 0 0 1-12.805869-12.80587V114.00603066a12.805869 12.805869 0 0 1 12.805869-12.805869z m0 0"
p-id="3654" fill="#3eaf7c"></path>
</svg>
</a>
<a href="/user/userinfo.html">
<svg t="1698639187751" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="4190" width="23" height="23">
<path d="M704 329.152C704 209.365333 622.848 128 512 128s-192 81.365333-192 201.152C320 454.762667 407.146667 554.666667 512 554.666667s192-99.904 192-225.514667z m42.666667 0C746.666667 476.714667 642.176 597.333333 512 597.333333s-234.666667-120.618667-234.666667-268.181333C277.333333 181.546667 381.824 85.333333 512 85.333333s234.666667 96.213333 234.666667 243.818667zM512.106667 640c408.96 0 404.864 256.512 404.864 256.512 3.093333 23.274667-13.482667 42.154667-37.098667 42.154667H144.32c-23.573333 0-41.088-19.136-37.077333-42.154667 0 0-4.096-256.512 404.864-256.512zM149.909333 896l0.064 3.861333-0.704 3.968c0.682667-3.882667-2.837333-7.829333-4.949333-7.829333H879.872c-2.154667 0-5.504 3.818667-5.205333 6.144l-0.426667-3.157333 0.064-3.157334c0-0.853333-0.128-3.349333-0.533333-7.125333a161.813333 161.813333 0 0 0-4.266667-23.082667 192.96 192.96 0 0 0-35.242667-71.104C780.330667 725.461333 678.634667 682.666667 512.106667 682.666667c-166.549333 0-268.224 42.794667-322.176 111.850666a192.96 192.96 0 0 0-35.242667 71.104c-2.176 8.426667-3.541333 16.192-4.266667 23.082667a81.045333 81.045333 0 0 0-0.512 7.296z"
fill="#3eaf7c" p-id="4191"></path>
</svg>
</a>
</ul>
<ul class="layui-nav pc" lay-filter="" style="padding:0 36px;text-align: center">
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=1&sort=last_index_update_time">玄幻小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=2&sort=last_index_update_time">修真小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=3&sort=last_index_update_time">都市小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=4&sort=last_index_update_time">历史小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=6&sort=last_index_update_time">网游小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=5&sort=last_index_update_time">科幻小说</a></li>
<li class="layui-nav-item"><a href="/book/book_ranking.html?catId=7&sort=last_index_update_time">女频小说</a></li>
<li class="layui-nav-item"><a>完本小说</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="/book/book_ranking.html?bookStatus=1">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?bookStatus=1&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a>小说排行</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="/book/book_ranking.html?sortBy=visit_count">全部小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=1">玄幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=2">修真小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=3">都市小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=4">历史小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=6">网游小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=5">科幻小说</a></dd>
<dd><a href="/book/book_ranking.html?sortBy=visit_count&catId=7">女频小说</a></dd>
</dl>
</li>
<li class="user_link"></li>
</div>
</div>
</ul>
<div class="layui-container">
<div class="layui-container" style="padding-left: 2%">
<div class="layui-row">
<div class="layui-col-xs10 layui-col-sm10 layui-col-md11 layui-col-lg11" style="padding-top:1%">
<div class="layui-col-xs10 layui-col-sm10 layui-col-md11 layui-col-lg11">
<input id="title" type="text" name="title" required lay-verify="required" placeholder="请输入书名·作者"
autocomplete="off"
class="layui-input">
</div>
<div class="layui-col-xs1" style="padding: 1%">
<div class="layui-col-xs1" style="padding: 0 1% 1%">
<button onclick="searchBooks()" class="layui-btn" lay-submit lay-filter="formDemo">搜索</button>
</div>
</div>
@ -263,7 +208,7 @@
if (data.code == 200) {
var updateRankBooks = data.data;
var updateRankBookHtml = "";
for (var i = 0; i < 10; i++) {
for (var i = 0; i < updateRankBooks.length; i++) {
var updateRankBook = updateRankBooks[i];
if (updateRankBook.bookDesc) {

View File

@ -5,7 +5,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title th:text="${application.website.name}+'列表'"></title>
<title th:text="${application.website.name}+'充值'"></title>
<meta name="keywords"
th:content="${application.website.name}+',精品小说,弹幕网站,弹幕,弹幕小说网站,免费小说,小说阅读,小说排行,轻小说,txt小说下载,电子书下载,动漫轻小说,日本轻小说'">
@ -79,11 +79,6 @@
padding-bottom: 20px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -170,7 +165,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
//查询用户信息
$.ajax({
@ -190,7 +184,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -113,7 +109,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
search(1, 20);

View File

@ -25,19 +25,20 @@
</a>
</div>
</div>
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form" action="">
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form"
action="">
<input type="hidden" id="bookIdHidden" name="bookId" th:value="${bookId}"/>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
@ -49,8 +50,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="button" value="登录" id="btnLogin" class="layui-btn" />
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<input type="button" value="登录" id="btnLogin" class="layui-btn"/>
<a class="layui-btn layui-btn-primary" href="/user/register.html">注册</a>
</div>
</div>
</form>
@ -62,25 +63,24 @@
<div th:replace="mobile/common/js :: js">
</div>
<script type="text/javascript">
$("#form1").css("min-height",($(window).height() - 140)+"px")
if(localStorage.getItem("autoLogin")==1){
$("#autoLogin").prop("checked",'true');
layui.form.render('checkbox','loginForm');
}else{
if (localStorage.getItem("autoLogin") == 1) {
$("#autoLogin").prop("checked", 'true');
layui.form.render('checkbox', 'loginForm');
} else {
$("#autoLogin").removeAttr("checked");
}
$("#btnLogin").click(function () {
var username = $("#txtUName").val();
if(username.isBlank()){
if (username.isBlank()) {
layer.alert("手机号不能为空!");
return;
}
if(!username.isPhone()){
if (!username.isPhone()) {
layer.alert("手机号格式不正确!");
return;
}
var password = $("#txtPassword").val();
if(password.isBlank()){
if (password.isBlank()) {
layer.alert("密码不能为空!");
return;
}
@ -91,12 +91,12 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if($("#autoLogin").is(':checked')){
$.cookie('Authorization', data.data.token, { expires: 7 ,path: '/' });
localStorage.setItem("autoLogin","1");
}else {
$.cookie('Authorization', data.data.token,{ path: '/' });
localStorage.setItem("autoLogin","0");
if ($("#autoLogin").is(':checked')) {
$.cookie('Authorization', data.data.token, {expires: 7, path: '/'});
localStorage.setItem("autoLogin", "1");
} else {
$.cookie('Authorization', data.data.token, {path: '/'});
localStorage.setItem("autoLogin", "0");
}
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
@ -114,5 +114,4 @@
</script>
</html>

View File

@ -62,10 +62,6 @@
height: 180px;
}
#footer {
padding-top: 10px;
line-height: 43px;
}
</style>
</head>
<body>
@ -113,7 +109,6 @@
<div th:replace="mobile/common/js :: js"></div>
<script>
$("#body").css("min-height", ($(window).height() - 110) + "px")
search(1, 20);

View File

@ -25,20 +25,21 @@
</a>
</div>
</div>
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form" action="">
<form lay-filter="loginForm" id="form1" style="height: 500px;padding-top:30px;padding-right: 20px" class="layui-form"
action="">
<input type="hidden" id="bookIdHidden" name="bookId" th:value="${bookId}"/>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
<input name="txtUName" type="text" id="txtUName" placeholder="请输入手机号"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
<input name="txtPassword" type="password" id="txtPassword" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
@ -46,7 +47,7 @@
<div class="layui-form-item ">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline">
<input name="txtUName" type="text" id="TxtChkCode" placeholder="请输入验证码"
<input name="txtUName" type="text" id="TxtChkCode" placeholder="请输入验证码"
autocomplete="off" class="layui-input">
</div>
<div class="layui-input-inline"><img
@ -55,8 +56,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="button" value="注册" id="btnRegister" class="layui-btn" />
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<input type="button" value="注册" id="btnRegister" class="layui-btn"/>
<a class="layui-btn layui-btn-primary" href="/user/login.html">登录</a>
</div>
</div>
</form>
@ -68,9 +69,8 @@
<div th:replace="mobile/common/js :: js">
</div>
<script type="text/javascript">
$("#form1").css("min-height",($(window).height() - 140)+"px")
$("#chkd").click();
$("#btnRegister").click(function () {
var username = $("#txtUName").val();
if (username.isBlank()) {
@ -94,12 +94,12 @@
$.ajax({
type: "POST",
url: "/user/register",
data: {"username": username, "password": password,"velCode":velCode},
data: {"username": username, "password": password, "velCode": velCode},
dataType: "json",
success: function (data) {
if (data.code == 200) {
$.cookie('Authorization', data.data.token, {path: '/'});
window.location.href="/";
window.location.href = "/";
} else {
layer.alert(data.msg);
}
@ -111,6 +111,7 @@
})
})
//获取验证码
function getVerify(obj) {
obj.src = "/file/getVerify?" + Math.random();
@ -118,5 +119,4 @@
</script>
</html>

View File

@ -213,7 +213,6 @@
<script>
$("#body").css("min-height", ($(window).height() - 60) + "px")
//查询用户信息
$.ajax({
@ -244,7 +243,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'充值_'+${application.website.name}"></title>
@ -20,39 +19,51 @@
<div class="payBox cf">
<div class="payHead cf">
<div class="fl">
充值账号<span class="user_name" id="my_name"></span>余额:<em class="red" id="accountBalance">0</em>屋币<!--<em class="red">+0</em>代金券-->
充值账号<span class="user_name" id="my_name"></span>余额:<em class="red" id="accountBalance">0</em>屋币
<!--<em class="red">+0</em>代金券-->
</div>
</div>
<div class="payCon">
<h5>选择充值方式</h5>
<ul class="pay_way cf" id="ulPayType">
<li class="on" valp="1"><img class="pay_pic" src="../images/pay_zfb.png" alt="支付宝支付" /></li>
<li valp="2"><img class="pay_pic" src="../images/pay_wx.png" alt="微信支付" /></li>
<li class="on" valp="1"><img class="pay_pic" src="../images/pay_zfb.png" alt="支付宝支付"/></li>
<li valp="2"><img class="pay_pic" src="../images/pay_wx.png" alt="微信支付"/></li>
</ul>
<h5>选择充值金额</h5>
<ul class="pay_way cf" id="ulZFWX">
<li vals="10"><strong>10元</strong><span class="pay_mn">1000屋币</span></li>
<li vals="30"><strong>30元</strong><span class="pay_mn">3000屋币</span></li>
<li vals="50"><strong>50元</strong><span class="pay_mn">5000屋币<!--<em class="red">+ 送500代金券</em>--></span></li>
<li vals="100"><strong>100元</strong><span class="pay_mn">10000屋币<!--<em class="red">+ 送1200代金券</em>--></span></li>
<li vals="200"><strong>200元</strong><span class="pay_mn">20000屋币<!--<em class="red">+ 送3000代金券</em>--></span></li>
<li vals="500"><strong>500元</strong><span class="pay_mn">50000屋币<!--<em class="red">+ 送10000代金券</em>--></span></li>
<li vals="50"><strong>50元</strong><span class="pay_mn">5000屋币
<!--<em class="red">+ 送500代金券</em>--></span></li>
<li vals="100"><strong>100元</strong><span class="pay_mn">10000屋币
<!--<em class="red">+ 送1200代金券</em>--></span></li>
<li vals="200"><strong>200元</strong><span class="pay_mn">20000屋币
<!--<em class="red">+ 送3000代金券</em>--></span></li>
<li vals="500"><strong>500元</strong><span class="pay_mn">50000屋币
<!--<em class="red">+ 送10000代金券</em>--></span></li>
</ul>
<ul class="pay_way cf" style="display:none;" id="ulPayPal">
<li vals="20"><strong>20美元</strong><span class="pay_mn">10000屋币</span></li>
<li vals="50" class="on"><strong>50美元</strong><span class="pay_mn">25000屋币<em class="red"></em></span></li>
<li vals="100"><strong>100美元</strong><span class="pay_mn">50000屋币<em class="red"></em></span></li>
<li vals="50" class="on"><strong>50美元</strong><span class="pay_mn">25000屋币<em class="red"></em></span>
</li>
<li vals="100"><strong>100美元</strong><span class="pay_mn">50000屋币<em class="red"></em></span>
</li>
</ul>
<ul class="pay_Checkout" id="ulZFWXXJ">
<li>当前汇率1元=100屋币</li>
<li>总计金额<em class="red" id="showTotal">¥50元</em> 获得 <em class="red" id="showRemark">5000屋币<!--+500代金券--></em></li>
<li style="display:none"><a class="btn_red" href="pay_success.html" onclick="javascript:UserPay.sendPay();">立即支付</a></li>
<li>总计金额<em class="red" id="showTotal">¥50元</em> 获得 <em class="red" id="showRemark">5000屋币
<!--+500代金券--></em></li>
<li style="display:none"><a class="btn_red" href="pay_success.html"
onclick="javascript:UserPay.sendPay();">立即支付</a></li>
</ul>
<ul class="pay_Checkout" style="display:none;" id="ulPayPalXJ">
<li>当前汇率1美元=500屋币</li>
<li>总计金额<em class="red" id="showPayPalTotal">50美元</em> 获得 <em class="red" id="showPayPalRemark">25000屋币</em></li>
<li style="display:none"><a class="btn_red" href="javascript:void(0);" onclick="javascript:UserPay.sendPay();">立即支付</a></li>
<li>总计金额<em class="red" id="showPayPalTotal">50美元</em> 获得 <em class="red"
id="showPayPalRemark">25000屋币</em>
</li>
<li style="display:none"><a class="btn_red" href="javascript:void(0);"
onclick="javascript:UserPay.sendPay();">立即支付</a></li>
</ul>
</div>
<div class="payFoot">
@ -68,7 +79,7 @@
</div>
</div>
<input type="hidden" id="pValue" name="payAmount" />
<input type="hidden" id="pValue" name="payAmount"/>
</form>
@ -80,7 +91,6 @@
<script type="text/javascript">
//查询用户信息
$.ajax({
type: "get",
@ -89,9 +99,9 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.nickName){
if (data.data.nickName) {
$("#my_name").html(data.data.nickName);
}else{
} else {
$("#my_name").html(data.data.username);
}
@ -99,7 +109,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -115,9 +125,9 @@
var payType = $("#ulPayType").find("li.on").attr("valp");
if(payType == 2){
if (payType == 2) {
layer.alert("微信支付暂未开通,敬请期待");
return ;
return;
}
$("#pValue").val($(this).attr("vals"));
@ -125,9 +135,6 @@
$("#payform").submit();
});
</script>

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的书评_'+${application.website.name}"></title>
@ -54,24 +55,24 @@
$.ajax({
type: "get",
url: "/user/listCommentByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var commentList = data.data.list;
if (commentList.length > 0) {
$("#bookCommentTotal").html("("+data.data.total+"条)");
$("#bookCommentTotal").html("(" + data.data.total + "条)");
var commentListHtml = "";
for (var i = 0; i < commentList.length; i++) {
var comment = commentList[i];
commentListHtml += ("<div class=\"comment_list cf\">" +
"<div class=\"user_heads fl\" vals=\"389\">" +
"<img src=\""+(comment.createUserPhoto ? comment.createUserPhoto : '/images/man.png')+"\" class=\"user_head\" alt=\"\">" +
"<img src=\"" + (comment.createUserPhoto ? comment.createUserPhoto : '/images/man.png') + "\" class=\"user_head\" alt=\"\">" +
"<span class=\"user_level1\" style=\"display: none;\">见习</span></div>" +
"<ul class=\"pl_bar fr\">\t\t\t<li class=\"name\">"+(comment.createUserName.substr(0, 4) + "****" + comment.createUserName.substr(comment.createUserName.length - 3, 3))+"</li><li class=\"dec\">" +
comment.commentContent+
"<ul class=\"pl_bar fr\">\t\t\t<li class=\"name\">" + (comment.createUserName.substr(0, 4) + "****" + comment.createUserName.substr(comment.createUserName.length - 3, 3)) + "</li><li class=\"dec\">" +
comment.commentContent +
"</li><li class=\"other cf\">" +
"<span class=\"time fl\">"+comment.createTime+"</span>" +
"<span class=\"time fl\">" + comment.createTime + "</span>" +
"<span class=\"fr\"><a href=\"javascript:void(0);\" onclick=\"javascript:BookDetail.AddAgreeTotal(77,this);\" class=\"zan\" style=\"display: none;\">赞<i class=\"num\">(0)</i></a>" +
"</span></li>\t\t</ul>\t</div>");
}
@ -109,9 +110,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -1,11 +1,13 @@
<!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 th:replace="common/header :: common_head(~{::title},~{::meta},~{::link},~{})">
<title th:text="'我的书架_'+${application.website.name}"></title>
<meta name="keywords" th:content="'我的书架,个人中心,'+${application.website.name}+'小说,'+${application.website.name}" />
<meta name="description" th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'" />
<link rel="stylesheet" href="/css/user.css" />
<meta name="keywords" th:content="'我的书架,个人中心,'+${application.website.name}+'小说,'+${application.website.name}"/>
<meta name="description"
th:content="${application.website.name}+'小说每日更新小说连载,小说排行榜,提供言情小说,都市小说,玄幻小说,穿越小说,青春小说,总裁豪门小说,网络小说,免费小说,全本小说,首发小说,最新章节免费小说阅读,精彩尽在'+${application.website.name}+'小说!'"/>
<link rel="stylesheet" href="/css/user.css"/>
</head>
</head>
<body class="">
@ -29,7 +31,9 @@
<div class="my_r">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl"><a href="javascript:void(0);" class="red">我的书架</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/user/read_history.html" >最近阅读</a></h2>
<h2 class="fl"><a href="javascript:void(0);" class="red">我的书架</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/user/read_history.html">最近阅读</a></h2>
</div>
<div id="divData" class="updateTable">
@ -56,7 +60,6 @@
<tbody id="bookShelfList">
</tbody>
</table>
<div class="pageBox cf" id="shellPage">
@ -82,31 +85,31 @@
$.ajax({
type: "get",
url: "/user/listBookShelfByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookShelfList = data.data.list;
if (bookShelfList.length > 0) {
var bookShelfListHtml = "";
for(var i=0;i<bookShelfList.length;i++){
for (var i = 0; i < bookShelfList.length; i++) {
var book = bookShelfList[i];
bookShelfListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
bookShelfListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >["+book.catName+"]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/"+book.bookId+".html\">\n" +
" "+book.bookName+"</a>\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +
" " + book.bookName + "</a>\n" +
" </td>\n" +
" <td class=\"chapter\" valsc=\"291|2037554|1\">\n" +
"<a href='/book/"+book.bookId+"/"+book.lastIndexId+".html'>"+book.lastIndexName+"</a>"+
"<a href='/book/" + book.bookId + "/" + book.lastIndexId + ".html'>" + book.lastIndexName + "</a>" +
" </td>\n" +
" <td class=\"time\">\n" +
" "+book.lastIndexUpdateTime+"\n" +
" " + book.lastIndexUpdateTime + "\n" +
" </td>\n" +
" <td class=\"goread\">\n" +
"<a href='/book/"+book.bookId+"/"+book.preContentId+".html'>继续阅读</a>"+
"<a href='/book/" + book.bookId + "/" + book.preContentId + ".html'>继续阅读</a>" +
" </td>\n" +
" </tr>");
}
@ -144,9 +147,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -74,7 +74,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'我的反馈_'+${application.website.name}"></title>
@ -34,8 +33,6 @@
<dd id="feedbackList">
</dd>
</dl>
<div class="cf">
@ -61,7 +58,7 @@
$.ajax({
type: "get",
url: "/user/listUserFeedBackByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -71,8 +68,8 @@
for (var i = 0; i < feedbackList.length; i++) {
var feedback = feedbackList[i];
feedbackListHtml += (" <div class=\"comment_list clear\" ><ul>\n" +
" <li class=\"li_1\"><span class=\"user_name fl\"></span><span class=\"time fl\">"+feedback.createTime+"</span></li>\n" +
" <li class=\"li_2\">"+feedback.content+"</li>\n" +
" <li class=\"li_1\"><span class=\"user_name fl\"></span><span class=\"time fl\">" + feedback.createTime + "</span></li>\n" +
" <li class=\"li_2\">" + feedback.content + "</li>\n" +
" </ul></div>");
}
$("#feedbackList").html(feedbackListHtml);
@ -109,9 +106,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'最近阅读_'+${application.website.name}"></title>
@ -13,7 +14,9 @@
<div class="viewhistoryBox">
<div class="my_bookshelf">
<div class="title cf">
<h2 class="fl ml10"><a href="javascript:void(0);" class="red">最近阅读</a></h2><i class="fl ml20 mr20 font16">|</i><h2 class="fl"><a href="/user/favorites.html">我的书架</a></h2>
<h2 class="fl ml10"><a href="javascript:void(0);" class="red">最近阅读</a></h2><i
class="fl ml20 mr20 font16">|</i>
<h2 class="fl"><a href="/user/favorites.html">我的书架</a></h2>
</div>
<div id="divData" class="updateTable">
<table cellpadding="0" cellspacing="0">
@ -69,31 +72,31 @@
$.ajax({
type: "get",
url: "/user/listReadHistoryByPage",
data: {'curr':curr,'limit':limit},
data: {'curr': curr, 'limit': limit},
dataType: "json",
success: function (data) {
if (data.code == 200) {
var bookHistoryList = data.data.list;
if (bookHistoryList.length > 0) {
var bookHistoryListHtml = "";
for(var i=0;i<bookHistoryList.length;i++){
for (var i = 0; i < bookHistoryList.length; i++) {
var book = bookHistoryList[i];
bookHistoryListHtml+=(" <tr class=\"book_list\" vals=\"291\">\n" +
bookHistoryListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >["+book.catName+"]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/"+book.bookId+".html\">\n" +
" "+book.bookName+"</a>\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +
" " + book.bookName + "</a>\n" +
" </td>\n" +
" <td class=\"chapter\" valsc=\"291|2037554|1\">\n" +
"<a href='/book/"+book.bookId+"/"+book.lastIndexId+".html'>"+book.lastIndexName+"</a>"+
"<a href='/book/" + book.bookId + "/" + book.lastIndexId + ".html'>" + book.lastIndexName + "</a>" +
" </td>\n" +
" <td class=\"time\">\n" +
" "+book.lastIndexUpdateTime+"\n" +
" " + book.lastIndexUpdateTime + "\n" +
" </td>\n" +
" <td class=\"goread\">\n" +
"<a href='/book/"+book.bookId+"/"+book.preContentId+".html'>继续阅读</a>"+
"<a href='/book/" + book.bookId + "/" + book.preContentId + ".html'>继续阅读</a>" +
" </td>\n" +
" </tr>");
}
@ -131,9 +134,9 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}else {
} else {
layer.alert(data.msg);
}

View File

@ -27,7 +27,7 @@
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的昵称</i><input name="txtNiceName" type="text" value="15171695474"
maxlength="20" id="txtNiceName" class="s_input"
maxlength="11" id="txtNiceName" class="s_input"
placeholder=""/></li>
<li><i class="tit">&nbsp;</i>用户名只能包括汉字、英文字母、数字和下划线</li>
<li><i class="tit">&nbsp;</i><input type="button" onclick="updateName()" name="btn" value="修改"
@ -61,7 +61,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -96,7 +96,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
$("#LabErr").html(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改密码_'+${application.website.name}"></title>
@ -24,13 +25,18 @@
<div class="my_r">
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的密码</i><input name="oldPass" type="password" id="txtOldPass" class="s_input" placeholder="请输入原密码" /></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass1" type="password" id="txtNewPass1" class="s_input" placeholder="请输入新密码" /></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass2" type="password" id="txtNewPass2" class="s_input" placeholder="请确认新密码" /></li>
<li><i class="tit">&nbsp;</i><input type="submit" name="btnExchangePassword" value="修改" id="btnExchangePassword" onclick="updatePassword()" class="s_btn btn_red" /></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
<ul class="mytab_list">
<li><i class="tit">我的密码</i><input name="oldPass" type="password" id="txtOldPass" class="s_input"
placeholder="请输入原密码"/></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass1" type="password" id="txtNewPass1"
class="s_input" placeholder="请输入新密码"/></li>
<li><i class="tit">&nbsp;</i><input name="txtNewPass2" type="password" id="txtNewPass2"
class="s_input" placeholder="请确认新密码"/></li>
<li><i class="tit">&nbsp;</i><input type="submit" name="btnExchangePassword" value="修改"
id="btnExchangePassword" onclick="updatePassword()"
class="s_btn btn_red"/></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
</div>
</div>
</div>
@ -57,14 +63,14 @@
$("#LabErr").html("确认密码不能为空!");
return;
}
if(newPassword1 !== newPassword2){
if (newPassword1 !== newPassword2) {
$("#LabErr").html("两次输入的新密码不匹配!");
return;
}
$.ajax({
type: "POST",
url: "/user/updatePassword",
data: {'oldPassword':oldPassword,'newPassword1':newPassword1,'newPassword2':newPassword2},
data: {'oldPassword': oldPassword, 'newPassword1': newPassword1, 'newPassword2': newPassword2},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -72,7 +78,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
$("#LabErr").html(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'修改性别_'+${application.website.name}"></title>
@ -24,14 +25,16 @@
<div class="my_r">
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li><i class="tit">我的性别</i>
<label><input type="radio" name="sex" value="0" />&nbsp;男生</label>
<label><input class="ml20" type="radio" name="sex" value="1" checked />&nbsp;女生</label>
</li>
<li class="mt20"><i class="tit">&nbsp;</i><input type="button" onclick="updateSex()" name="btn" value="修改" id="btn" class="s_btn btn_red" /></li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
<ul class="mytab_list">
<li><i class="tit">我的性别</i>
<label><input type="radio" name="sex" value="0"/>&nbsp;男生</label>
<label><input class="ml20" type="radio" name="sex" value="1" checked/>&nbsp;女生</label>
</li>
<li class="mt20"><i class="tit">&nbsp;</i><input type="button" onclick="updateSex()" name="btn"
value="修改" id="btn" class="s_btn btn_red"/>
</li>
<li><i class="tit">&nbsp;</i><span id="LabErr"></span></li>
</ul>
</div>
</div>
</div>
@ -50,15 +53,14 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userSex === '0'){
$("input[name=sex]").eq(0).attr("checked",true);
if (data.data.userSex === '0') {
$("input[name=sex]").eq(0).attr("checked", true);
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -69,11 +71,12 @@
layer.alert('网络异常');
}
})
function updateSex() {
$.ajax({
type: "POST",
url: "/user/updateUserInfo",
data: {'userSex':$("input[name=sex]:checked").val()},
data: {'userSex': $("input[name=sex]:checked").val()},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -81,7 +84,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);

View File

@ -1,4 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'账号设置_'+${application.website.name}"></title>
@ -25,10 +26,12 @@
<div class="my_info cf">
<div class="my_info_txt">
<ul class="mytab_list">
<li ><i class="tit">我的头像</i>
<a style="position: relative" >
<img id="imgLogo" class="user_img" alt="我的头像" src="/images/man.png" />
<input class="opacity" onchange="picChange()" type="file" id="file0" name="file" title="点击上传图片" style="z-index: 100;cursor: pointer;left: 0px; top: -25px; width: 60px; height: 80px; opacity: 0; position: absolute; "/>
<li><i class="tit">我的头像</i>
<a style="position: relative">
<img id="imgLogo" class="user_img" alt="我的头像" src="/images/man.png"/>
<input class="opacity" onchange="picChange()" type="file" id="file0" name="file"
title="点击上传图片"
style="z-index: 100;cursor: pointer;left: 0px; top: -25px; width: 60px; height: 80px; opacity: 0; position: absolute; "/>
</a>
@ -59,27 +62,26 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userPhoto){
$("#imgLogo").attr("src",data.data.userPhoto);
if (data.data.userPhoto) {
$("#imgLogo").attr("src", data.data.userPhoto);
}
if(data.data.nickName){
$("#my_name").html(data.data.nickName+"<em class=\"ml10\">[修改]</em>");
}else{
$("#my_name").html(data.data.username+"<em class=\"ml10\">[修改]</em>");
if (data.data.nickName) {
$("#my_name").html(data.data.nickName + "<em class=\"ml10\">[修改]</em>");
} else {
$("#my_name").html(data.data.username + "<em class=\"ml10\">[修改]</em>");
}
if(data.data.userSex === '0'){
if (data.data.userSex === '0') {
$("#my_sex").html("男<em class=\"ml10\">[修改]</em>");
}else if(data.data.userSex === '1'){
} else if (data.data.userSex === '1') {
$("#my_sex").html("女<em class=\"ml10\">[修改]</em>");
}else{
} else {
$("#my_sex").html("请选择");
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -96,7 +98,7 @@
var file = $("#file0").val(); //文件名称
if (file != "") {
if(checkPicUpload($("#file0")[0])) {
if (checkPicUpload($("#file0")[0])) {
$.ajaxFileUpload({
url: "/file/picUpload", //用于文件上传的服务器端请求地址
@ -118,7 +120,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -143,7 +145,6 @@
}
}
</script>
</body>

View File

@ -1,6 +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 th:replace="common/header :: common_head(~{::title},~{},~{::link},~{})">
<title th:text="'个人中心_'+${application.website.name}"></title>
@ -25,12 +24,14 @@
</div>
<div class="my_r">
<div class="my_info cf">
<img id="imgLogo" class="user_big_head" src="/images/man.png" />
<img id="imgLogo" class="user_big_head" src="/images/man.png"/>
<div class="my_info_txt">
<p class="my_name" id="my_name">
</p>
</p>
<ul class="my_list">
<li class="my_gold"><i>账户余额:</i><em class="red" id="accountBalance">0</em>屋币<!--<em class="red">+</em><em class="red">0</em>代金券--><a href="/pay/index.html" class="btn_link">立即充值</a></li>
<li class="my_gold"><i>账户余额:</i><em class="red" id="accountBalance">0</em>屋币
<!--<em class="red">+</em><em class="red">0</em>代金券--><a href="/pay/index.html"
class="btn_link">立即充值</a></li>
<li class="my_baonian"></li>
</ul>
@ -87,12 +88,12 @@
dataType: "json",
success: function (data) {
if (data.code == 200) {
if(data.data.userPhoto){
$("#imgLogo").attr("src",data.data.userPhoto);
if (data.data.userPhoto) {
$("#imgLogo").attr("src", data.data.userPhoto);
}
if(data.data.nickName){
if (data.data.nickName) {
$("#my_name").html(data.data.nickName);
}else{
} else {
$("#my_name").html(data.data.username);
}
@ -100,7 +101,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -115,7 +116,7 @@
$.ajax({
type: "get",
url: "/user/listBookShelfByPage",
data: {'limit':2},
data: {'limit': 2},
dataType: "json",
success: function (data) {
if (data.code == 200) {
@ -126,7 +127,7 @@
var book = bookShelfList[i];
bookShelfListHtml += (" <tr class=\"book_list\" vals=\"291\">\n" +
" <td class=\"style bookclass\">\n" +
" <a href=\"/book/bookclass.html?c="+book.catId+"\" >[" + book.catName + "]</a>\n" +
" <a href=\"/book/bookclass.html?c=" + book.catId + "\" >[" + book.catName + "]</a>\n" +
" </td>\n" +
" <td class=\"name\">\n" +
" <a href=\"/book/" + book.bookId + ".html\">\n" +

View File

@ -331,7 +331,7 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
}
.logo {
width: 198px;
width: 160px;
float: left;
padding: 23px 130px 0 0;
display: block

View File

@ -27,15 +27,14 @@
if (layerStatus == 1) {
$("#cFavs").html("<a class=\"ico_shelf\" href=\"javascript:void(0);\"><b>已收藏</b></a>");
jQuery.cookie("u-faorites", "1");
}
else {
} else {
$("#cFavs").html("<a class=\"btn_ora_white btn_addsj\" href=\"javascript:void(0);\">已在书架</a>");
}
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -91,7 +90,7 @@
}
},
SaveComment: function (cmtBId, cmtCId, cmtDetail) {
if(!isLogin){
if (!isLogin) {
layer.alert('请先登陆');
return;
}
@ -121,7 +120,7 @@
} else if (data.code == 1001) {
//未登录
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
} else {
layer.alert(data.msg);
@ -187,7 +186,7 @@
localStorage.setItem("fonts", fonts);
$(".readBox").css("font-size", fonts + "px");
$("#cFonts").html(fonts);
$("#ChapterBody").attr("class","article-content font"+fonts);
$("#ChapterBody").attr("class", "article-content font" + fonts);
BookDetail.reShowCover();
},
SetBackUpColor: function (colorNum) {

View File

@ -1,10 +1,11 @@
var needLoginPath = ['/user/favorites.html','/user/comment.html','/user/feedback.html',
'/user/feedback_list.html','/user/read_history.html','/user/set_name.html',
'/user/set_password.html','/user/set_sex.html','/user/setup.html','/user/userinfo.html',
var needLoginPath = ['/user/favorites.html', '/user/comment.html', '/user/feedback.html',
'/user/feedback_list.html', '/user/read_history.html', '/user/set_name.html',
'/user/set_password.html', '/user/set_sex.html', '/user/setup.html', '/user/userinfo.html',
"/pay/index.html," +
"/author/register.html","/author/index.html"];
"/author/register.html", "/author/index.html"];
var isLogin = false;
var url = window.location.search;
//key(需要检索的键
function getSearchString(key) {
var str = url;
@ -14,26 +15,28 @@ function getSearchString(key) {
for (var i = 0; i < arr.length; i++) {
var tmp_arr = arr[i].split("=");
if(tmp_arr[0] == key){
if (tmp_arr[0] == key) {
return decodeURIComponent(tmp_arr[1]);
}
}
return undefined;
}
var keyword = getSearchString("k");
if(keyword != undefined) {
if (keyword != undefined) {
$("#searchKey").val(keyword);
$("#workDirection").remove();
$("#idGirl").remove();
}
function searchByK(k){
if(!k){
window.location.href='/book/bookclass.html?k='+encodeURIComponent(document.getElementById("searchKey").value)
}else{
window.location.href='/book/bookclass.html?k='+encodeURIComponent(k)
function searchByK(k) {
if (!k) {
window.location.href = '/book/bookclass.html?k=' + encodeURIComponent(document.getElementById("searchKey").value)
} else {
window.location.href = '/book/bookclass.html?k=' + encodeURIComponent(k)
}
}
$("#searchKey").keypress(function (even) {
if (even.which == 13) {
even.stopPropagation();
@ -50,37 +53,37 @@ Array.prototype.indexOf = function (val) {
var token = $.cookie('Authorization');
if(!token){
if(needLoginPath.indexOf(window.location.pathname) != -1){
location.href = '/user/login.html?originUrl='+decodeURIComponent(location.href);
if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}
$(".user_link").html("<i class=\"line mr20\">|</i><a href=\"/user/login.html\" class=\"mr15\">登录</a><a href=\"/user/register.html\" >注册</a>");
}else{
} else {
$.ajax({
type: "POST",
url: "/user/refreshToken",
data: {},
dataType: "json",
success: function(data){
if(data.code == 200){
success: function (data) {
if (data.code == 200) {
$(".user_link").html("<i class=\"line mr20\">|</i>" +
"<a href=\"/user/userinfo.html\" class=\"mr15\">"+data.data.nickName+"</a>" +
"<a href=\"/user/userinfo.html\" class=\"mr15\">" + data.data.nickName + "</a>" +
"<a href=\"javascript:logout()\" >退出</a>");
;
if("/user/login.html" == window.location.pathname){
if ("/user/login.html" == window.location.pathname) {
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
return;
}
isLogin = true;
if(localStorage.getItem("autoLogin") == 1){
$.cookie('Authorization', data.data.token, { expires: 7 ,path: '/' });
}else {
$.cookie('Authorization', data.data.token,{ path: '/' });
if (localStorage.getItem("autoLogin") == 1) {
$.cookie('Authorization', data.data.token, {expires: 7, path: '/'});
} else {
$.cookie('Authorization', data.data.token, {path: '/'});
}
}else{
if(needLoginPath.indexOf(window.location.pathname) != -1){
} else {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html';
}
$(".user_link").html("<i class=\"line mr20\">|</i><a href=\"/user/login.html\" class=\"mr15\">登录</a><a href=\"/user/register.html\" >注册</a>");
@ -94,7 +97,6 @@ if(!token){
}
String.prototype.isPhone = function () {
var strTemp = /^1[3|4|5|6|7|8|9][0-9]{9}$/;
if (strTemp.test(this)) {
@ -104,7 +106,7 @@ String.prototype.isPhone = function () {
};
String.prototype.isBlank = function () {
if(this == null || $.trim(this) == ""){
if (this == null || $.trim(this) == "") {
return true;
}
return false;
@ -118,11 +120,8 @@ String.prototype.isNickName = function () {
};
function logout() {
$.cookie('Authorization', null,{ path: '/' });
$.cookie('Authorization', null, {path: '/'});
location.reload();
}
@ -133,9 +132,9 @@ function isImg(str) {
//校验图片上传
function checkPicUpload(file){
function checkPicUpload(file) {
if(!isImg(file.value.substr(file.value.lastIndexOf(".")))){
if (!isImg(file.value.substr(file.value.lastIndexOf(".")))) {
layer.alert('只能上传图片格式的文件');
return false;
}
@ -144,13 +143,13 @@ function checkPicUpload(file){
if (isIE && !file.files) {
var filePath = file.value;
var fileSystem = new ActiveXObject("Scripting.FileSystemfileect");
var file = fileSystem.GetFile (filePath);
var file = fileSystem.GetFile(filePath);
fileSize = file.Size;
}else {
} else {
fileSize = file.files[0].size;
}
fileSize=Math.round(fileSize/1024*100)/100; //单位为KB
if(fileSize>=1024){
fileSize = Math.round(fileSize / 1024 * 100) / 100; //单位为KB
if (fileSize >= 1024) {
layer.alert('上传的图片大小不能超过1M');
return false;
}

View File

@ -106,10 +106,10 @@ Array.prototype.remove = function (val) {
var token = $.cookie('Authorization');
if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html?originUrl=' + decodeURIComponent(location.href);
location.href = '/user/login.html?originUrl=' + encodeURIComponent(location.href);
}
$(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
// $(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
} else {
$.ajax({
type: "POST",
@ -118,10 +118,10 @@ if (!token) {
dataType: "json",
success: function (data) {
if (data.code == 200) {
$(".user_link").html("<a href=\"/user/userinfo.html\"><i style=\"font-size: 20px;\" class=\"layui-icon \n" +
"\">&#xe66f;" +
"\n" +
"</i></a>");
// $(".user_link").html("<a href=\"/user/userinfo.html\"><i style=\"font-size: 20px;\" class=\"layui-icon \n" +
// "\">&#xe66f;" +
// "\n" +
// "</i></a>");
if ("/user/login.html" == window.location.pathname) {
var orginUrl = getSearchString("originUrl");
window.location.href = orginUrl == undefined || orginUrl.isBlank() ? "/" : orginUrl;
@ -137,7 +137,7 @@ if (!token) {
if (needLoginPath.indexOf(window.location.pathname) != -1) {
location.href = '/user/login.html';
}
$(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
// $(".user_link").html("<a href=\"/user/login.html\">登录</a><a href=\"/user/register.html\">注册</a>");
}
},
error: function () {

File diff suppressed because it is too large Load Diff