├── novel_cms ├── webapps │ ├── META-INF │ │ └── MANIFEST.MF │ ├── resources │ │ ├── img │ │ │ ├── bg01.png │ │ │ ├── bg_c.png │ │ │ ├── bg_l.png │ │ │ ├── bg_r.png │ │ │ ├── arrow01.png │ │ │ ├── arrow02.png │ │ │ ├── arrow03.png │ │ │ ├── ico01.png │ │ │ ├── ico02.png │ │ │ ├── ico03.png │ │ │ ├── ico04.png │ │ │ ├── ico05.png │ │ │ ├── ico06.png │ │ │ ├── ico07.png │ │ │ ├── ico08.png │ │ │ ├── ico09.png │ │ │ ├── ico10.png │ │ │ ├── ico11.png │ │ │ ├── ico12.png │ │ │ ├── ico13.png │ │ │ ├── ico14.png │ │ │ ├── ico15.png │ │ │ ├── ico16.png │ │ │ ├── ico17.png │ │ │ ├── ico18.png │ │ │ ├── ico19.png │ │ │ ├── ico20.png │ │ │ ├── ico21.png │ │ │ ├── ico22.png │ │ │ ├── ico23.png │ │ │ ├── img01.png │ │ │ ├── img02.png │ │ │ ├── img03.png │ │ │ ├── img04.png │ │ │ ├── img05.png │ │ │ ├── img06.png │ │ │ ├── img07.png │ │ │ ├── line01.png │ │ │ ├── line02.png │ │ │ ├── loading.gif │ │ │ ├── submit.png │ │ │ └── btn_submit.png │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── js │ │ │ ├── iface │ │ │ │ ├── chapter.js │ │ │ │ └── regular.js │ │ │ ├── pager.js │ │ │ ├── model.js │ │ │ ├── login.js │ │ │ └── status.js │ │ └── css │ │ │ └── login.css │ ├── libs │ │ ├── ratchet │ │ │ └── fonts │ │ │ │ ├── ratchicons.eot │ │ │ │ ├── ratchicons.ttf │ │ │ │ └── ratchicons.woff │ │ ├── foundation │ │ │ └── fonts │ │ │ │ ├── foundation-icons.eot │ │ │ │ ├── foundation-icons.ttf │ │ │ │ └── foundation-icons.woff │ │ ├── bootstrap │ │ │ └── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── datetimepicker │ │ │ └── js │ │ │ │ └── locales │ │ │ │ ├── bootstrap-datetimepicker.ja.js │ │ │ │ ├── datetimepicker.zh-CN.js │ │ │ │ ├── bootstrap-datetimepicker.zh-TW.js │ │ │ │ ├── bootstrap-datetimepicker.hr.js │ │ │ │ ├── bootstrap-datetimepicker.ko.js │ │ │ │ ├── bootstrap-datetimepicker.id.js │ │ │ │ ├── bootstrap-datetimepicker.ua.js │ │ │ │ ├── bootstrap-datetimepicker.he.js │ │ │ │ ├── bootstrap-datetimepicker.ms.js │ │ │ │ ├── bootstrap-datetimepicker.no.js │ │ │ │ ├── bootstrap-datetimepicker.tr.js │ │ │ │ ├── bootstrap-datetimepicker.ca.js │ │ │ │ ├── bootstrap-datetimepicker.da.js │ │ │ │ ├── bootstrap-datetimepicker.el.js │ │ │ │ ├── bootstrap-datetimepicker.rs.js │ │ │ │ ├── bootstrap-datetimepicker.sv.js │ │ │ │ ├── bootstrap-datetimepicker.th.js │ │ │ │ ├── bootstrap-datetimepicker.bg.js │ │ │ │ ├── bootstrap-datetimepicker.es.js │ │ │ │ ├── bootstrap-datetimepicker.nl.js │ │ │ │ ├── bootstrap-datetimepicker.rs-latin.js │ │ │ │ ├── bootstrap-datetimepicker.ru.js │ │ │ │ ├── bootstrap-datetimepicker.sl.js │ │ │ │ ├── bootstrap-datetimepicker.nb.js │ │ │ │ ├── bootstrap-datetimepicker.uk.js │ │ │ │ ├── bootstrap-datetimepicker.hu.js │ │ │ │ ├── bootstrap-datetimepicker.ro.js │ │ │ │ ├── bootstrap-datetimepicker.ar.js │ │ │ │ ├── bootstrap-datetimepicker.is.js │ │ │ │ ├── bootstrap-datetimepicker.pt-BR.js │ │ │ │ ├── bootstrap-datetimepicker.de.js │ │ │ │ ├── bootstrap-datetimepicker.fi.js │ │ │ │ ├── bootstrap-datetimepicker.sk.js │ │ │ │ ├── bootstrap-datetimepicker.fr.js │ │ │ │ ├── bootstrap-datetimepicker.pl.js │ │ │ │ ├── bootstrap-datetimepicker.it.js │ │ │ │ ├── bootstrap-datetimepicker.pt.js │ │ │ │ ├── bootstrap-datetimepicker.cs.js │ │ │ │ ├── bootstrap-datetimepicker.lv.js │ │ │ │ ├── bootstrap-datetimepicker.ee.js │ │ │ │ ├── bootstrap-datetimepicker.lt.js │ │ │ │ └── bootstrap-datetimepicker.sw.js │ │ └── th2w.core.js │ └── WEB-INF │ │ ├── classes │ │ ├── com │ │ │ └── novel │ │ │ │ └── cms │ │ │ │ ├── service │ │ │ │ ├── LoginService.class │ │ │ │ ├── NovelService.class │ │ │ │ ├── CategoryService.class │ │ │ │ ├── ChapterService.class │ │ │ │ └── impl │ │ │ │ │ ├── LoginServiceImpl.class │ │ │ │ │ ├── NovelServiceImpl.class │ │ │ │ │ ├── ChapterServiceImpl.class │ │ │ │ │ └── CategoryServiceImpl.class │ │ │ │ └── controller │ │ │ │ ├── LoginController.class │ │ │ │ ├── NovelController.class │ │ │ │ ├── CateGoryController.class │ │ │ │ └── ChapterController.class │ │ ├── config.properties │ │ ├── log4j.properties │ │ ├── beans │ │ │ └── applicationContext.xml │ │ └── rest-servlet.xml │ │ ├── jsp │ │ ├── category │ │ │ ├── add.jsp │ │ │ └── edit.jsp │ │ ├── chapter │ │ │ ├── add.jsp │ │ │ └── edit.jsp │ │ ├── head.jsp │ │ ├── login │ │ │ └── login.jsp │ │ ├── regular │ │ │ ├── add.jsp │ │ │ └── edit.jsp │ │ ├── novel │ │ │ ├── add.jsp │ │ │ └── edit.jsp │ │ ├── top.jsp │ │ └── leftmenu.jsp │ │ └── web.xml ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── novel │ │ │ └── cms │ │ │ ├── service │ │ │ ├── LoginService.java │ │ │ ├── ChapterService.java │ │ │ ├── CategoryService.java │ │ │ ├── impl │ │ │ │ ├── LoginServiceImpl.java │ │ │ │ ├── CategoryServiceImpl.java │ │ │ │ ├── ChapterServiceImpl.java │ │ │ │ └── NovelServiceImpl.java │ │ │ └── NovelService.java │ │ │ └── controller │ │ │ ├── LoginController.java │ │ │ └── ChapterController.java │ │ └── resource │ │ ├── config.properties │ │ ├── log4j.properties │ │ ├── beans │ │ └── applicationContext.xml │ │ └── rest-servlet.xml └── pom.xml ├── novel_web ├── webapps │ ├── META-INF │ │ └── MANIFEST.MF │ ├── resources │ │ ├── img │ │ │ ├── QQ.png │ │ │ ├── erweima.png │ │ │ ├── wechat.png │ │ │ └── wechatplu.png │ │ ├── css │ │ │ ├── aboutSoftWare.css │ │ │ ├── suggestion.css │ │ │ ├── my.css │ │ │ ├── callus.css │ │ │ ├── detail.css │ │ │ └── books.css │ │ └── js │ │ │ ├── shelf.js │ │ │ ├── comm.js │ │ │ ├── cookie.js │ │ │ ├── detail.js │ │ │ └── books.js │ ├── libs │ │ ├── ratchet │ │ │ ├── fonts │ │ │ │ ├── ratchicons.eot │ │ │ │ ├── ratchicons.ttf │ │ │ │ └── ratchicons.woff │ │ │ ├── css │ │ │ │ └── app.css │ │ │ └── js │ │ │ │ └── ratchet.pager.js │ │ ├── foundation │ │ │ └── fonts │ │ │ │ ├── foundation-icons.eot │ │ │ │ ├── foundation-icons.ttf │ │ │ │ └── foundation-icons.woff │ │ └── plugins │ │ │ └── css.js │ └── WEB-INF │ │ ├── classes │ │ ├── com │ │ │ └── microc │ │ │ │ └── novel │ │ │ │ └── web │ │ │ │ ├── service │ │ │ │ ├── MyService.class │ │ │ │ ├── BooksService.class │ │ │ │ ├── ShelfService.class │ │ │ │ └── impl │ │ │ │ │ ├── MyServiceImpl.class │ │ │ │ │ ├── BooksServiceImpl.class │ │ │ │ │ └── ShelfServiceImpl.class │ │ │ │ └── controller │ │ │ │ ├── MyController.class │ │ │ │ ├── BooksController.class │ │ │ │ └── ShelfController.class │ │ ├── beans │ │ │ └── beans.xml │ │ └── rest-servlet.xml │ │ ├── jsp │ │ ├── books │ │ │ ├── fragment.jsp │ │ │ ├── list.jsp │ │ │ └── detail.jsp │ │ ├── comm │ │ │ ├── foot.jsp │ │ │ └── head.jsp │ │ ├── my │ │ │ ├── suggestion.jsp │ │ │ ├── relief.jsp │ │ │ ├── my.jsp │ │ │ ├── callus.jsp │ │ │ └── aboutSoftWare.jsp │ │ ├── shelf │ │ │ └── list.jsp │ │ └── html │ │ │ ├── users.html │ │ │ ├── search.html │ │ │ ├── store.html │ │ │ └── index.html │ │ └── web.xml ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── microc │ │ │ └── novel │ │ │ └── web │ │ │ ├── service │ │ │ ├── MyService.java │ │ │ ├── ShelfService.java │ │ │ ├── BooksService.java │ │ │ └── impl │ │ │ │ ├── MyServiceImpl.java │ │ │ │ ├── BooksServiceImpl.java │ │ │ │ └── ShelfServiceImpl.java │ │ │ └── controller │ │ │ ├── ShelfController.java │ │ │ ├── BooksController.java │ │ │ └── MyController.java │ │ └── resource │ │ ├── beans │ │ └── beans.xml │ │ └── rest-servlet.xml └── pom.xml ├── novel_crawler ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── microc │ │ │ └── novel │ │ │ └── crawler │ │ │ ├── service │ │ │ ├── BooksService.java │ │ │ └── impl │ │ │ │ └── BooksServiceImpl.java │ │ │ ├── utils │ │ │ ├── MatcherUtil.java │ │ │ └── HttpUtil.java │ │ │ ├── main │ │ │ └── Main.java │ │ │ └── consts │ │ │ └── Constants.java │ │ └── resources │ │ └── beans │ │ └── spring-beans.xml └── pom.xml └── novel_basic └── src └── main ├── resources ├── config_test.properties ├── config.properties ├── beans │ ├── spring-beans.xml │ └── spring-jdbc.xml ├── com │ └── microc │ │ └── novel │ │ └── basic │ │ └── mapper │ │ ├── BooksUrlMapper.xml │ │ ├── CategoryMapper.xml │ │ ├── ChapterMapper.xml │ │ └── BooksMapper.xml └── log4j.properties └── java └── com └── microc └── novel └── basic ├── mapper ├── BooksUrlMapper.java ├── CategoryMapper.java ├── ChapterMapper.java └── BooksMapper.java ├── dao ├── ChapterDao.java ├── CategoryDao.java ├── BooksDao.java └── impl │ └── CategoryDaompl.java ├── model ├── BooksUrl.java ├── Category.java ├── db │ ├── DBCategory.java │ ├── DBChapter.java │ └── DBBooks.java ├── Suggestion.java ├── Chapter.java └── Books.java ├── util ├── ConvertUtil.java ├── Pager.java └── Generator.java └── datasource └── SimpleDataSource.java /novel_cms/webapps/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /novel_web/webapps/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/img/QQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/resources/img/QQ.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/bg01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/bg01.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/bg_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/bg_c.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/bg_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/bg_l.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/bg_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/bg_r.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/arrow01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/arrow01.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/arrow02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/arrow02.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/arrow03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/arrow03.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico01.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico02.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico03.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico04.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico05.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico06.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico07.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico08.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico09.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico10.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico11.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico12.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico13.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico14.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico15.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico16.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico17.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico18.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico19.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico20.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico21.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico22.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/ico23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/ico23.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img01.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img02.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img03.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img04.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img05.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img06.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/img07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/img07.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/line01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/line01.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/line02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/line02.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/loading.gif -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/submit.png -------------------------------------------------------------------------------- /novel_web/webapps/resources/img/erweima.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/resources/img/erweima.png -------------------------------------------------------------------------------- /novel_web/webapps/resources/img/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/resources/img/wechat.png -------------------------------------------------------------------------------- /novel_web/webapps/resources/img/wechatplu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/resources/img/wechatplu.png -------------------------------------------------------------------------------- /novel_cms/webapps/resources/img/btn_submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/img/btn_submit.png -------------------------------------------------------------------------------- /novel_cms/webapps/libs/ratchet/fonts/ratchicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/ratchet/fonts/ratchicons.eot -------------------------------------------------------------------------------- /novel_cms/webapps/libs/ratchet/fonts/ratchicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/ratchet/fonts/ratchicons.ttf -------------------------------------------------------------------------------- /novel_cms/webapps/libs/ratchet/fonts/ratchicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/ratchet/fonts/ratchicons.woff -------------------------------------------------------------------------------- /novel_web/webapps/libs/ratchet/fonts/ratchicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/ratchet/fonts/ratchicons.eot -------------------------------------------------------------------------------- /novel_web/webapps/libs/ratchet/fonts/ratchicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/ratchet/fonts/ratchicons.ttf -------------------------------------------------------------------------------- /novel_web/webapps/libs/ratchet/fonts/ratchicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/ratchet/fonts/ratchicons.woff -------------------------------------------------------------------------------- /novel_cms/webapps/libs/foundation/fonts/foundation-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/foundation/fonts/foundation-icons.eot -------------------------------------------------------------------------------- /novel_cms/webapps/libs/foundation/fonts/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/foundation/fonts/foundation-icons.ttf -------------------------------------------------------------------------------- /novel_web/webapps/libs/foundation/fonts/foundation-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/foundation/fonts/foundation-icons.eot -------------------------------------------------------------------------------- /novel_web/webapps/libs/foundation/fonts/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/foundation/fonts/foundation-icons.ttf -------------------------------------------------------------------------------- /novel_cms/webapps/libs/foundation/fonts/foundation-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/foundation/fonts/foundation-icons.woff -------------------------------------------------------------------------------- /novel_web/webapps/libs/foundation/fonts/foundation-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/libs/foundation/fonts/foundation-icons.woff -------------------------------------------------------------------------------- /novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/resources/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/aboutSoftWare.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | button { 7 | margin-top: 2%; 8 | margin-left: 7px; 9 | width: 96%; 10 | } 11 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/libs/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/LoginService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/LoginService.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/NovelService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/NovelService.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/CategoryService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/CategoryService.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/ChapterService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/ChapterService.class -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/iface/chapter.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $(".chapter").click(function () { 3 | location.href = "chapter?bookId=" + $(this).attr('data-chapter'); 4 | }); 5 | }); -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/MyService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/MyService.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/LoginController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/LoginController.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/NovelController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/NovelController.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/CateGoryController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/CateGoryController.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/ChapterController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/controller/ChapterController.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/LoginServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/LoginServiceImpl.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/NovelServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/NovelServiceImpl.class -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/service/BooksService.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.service; 2 | 3 | public interface BooksService { 4 | 5 | void crawler(String category); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/BooksService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/BooksService.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/ShelfService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/ShelfService.class -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/ChapterServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/ChapterServiceImpl.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/MyController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/MyController.class -------------------------------------------------------------------------------- /novel_web/webapps/resources/js/shelf.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $(".deleteBooks").click(function() { 3 | var booksId = $(this).data("delete"); 4 | DB.pull("books", booksId); 5 | $("#" + booksId).hide(200); 6 | }); 7 | }); -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/CategoryServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_cms/webapps/WEB-INF/classes/com/novel/cms/service/impl/CategoryServiceImpl.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/BooksController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/BooksController.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/ShelfController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/controller/ShelfController.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/MyServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/MyServiceImpl.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/BooksServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/BooksServiceImpl.class -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/ShelfServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuiChuping/novel/HEAD/novel_web/webapps/WEB-INF/classes/com/microc/novel/web/service/impl/ShelfServiceImpl.class -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/MyService.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service; 2 | 3 | 4 | public interface MyService { 5 | 6 | void suggestionSubmit(String contactWay, String suggestion); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/iface/regular.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $(".cgstatus").click(function () { 3 | location.href = "changeRegstu?id=" + $(this).attr('data-regular')+'&status=' + $(this).attr('data-status'); 4 | }); 5 | }); -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/pager.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $("nav .pageTab").click(function () { 3 | _form = $(this).closest('form'); 4 | _form.find('input[name=pageNo]').val($(this).attr('data-page')); 5 | _form.submit(); 6 | }); 7 | }); -------------------------------------------------------------------------------- /novel_basic/src/main/resources/config_test.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/d_novel?useUnicode=true&characterEncoding=utf8 3 | jdbc.username=root 4 | jdbc.password=root 5 | books.file=F:/books/files/ 6 | books.image=F:/books/images/ -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/LoginService.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service; 2 | 3 | /** 4 | * 5 | * @author sun 6 | * @createTime 下午4:05:47 7 | * 登陆 Service 8 | */ 9 | public interface LoginService { 10 | 11 | boolean login(String id, String password); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /novel_cms/src/main/resource/config.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/d_novel?useUnicode=true&characterEncoding=utf8 3 | jdbc.username=root 4 | jdbc.password=root 5 | books.file=/mnt/books/file/ 6 | books.image=/mnt/books/image/ 7 | 8 | username=dennis 9 | password=dennis -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/config.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/d_novel?useUnicode=true&characterEncoding=utf8 3 | jdbc.username=root 4 | jdbc.password=root 5 | books.file=/mnt/books/file/ 6 | books.image=/mnt/books/image/ 7 | 8 | username=dennis 9 | password=dennis -------------------------------------------------------------------------------- /novel_basic/src/main/resources/config.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://sqld.duapp.com:4050/HWprsFCMNrKHGEkzKcnw?useUnicode=true&characterEncoding=utf8 3 | jdbc.username=1FWL8rFpDAlyfMXmcmgZ7NrP 4 | jdbc.password=jZslqg3gqGpENLUxc3buro06mzDh61VV 5 | books.file=F:/books/files/ 6 | books.image=F:/books/images/ -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/suggestion.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | .content > form >textarea { 7 | margin-top: 20px; 8 | margin-left: 7px; 9 | height: 180px; 10 | width: 96%; 11 | } 12 | 13 | .content > form >input , .content > form >button { 14 | margin-top: 2%; 15 | margin-left: 7px; 16 | width: 96%; 17 | } -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/model.js: -------------------------------------------------------------------------------- 1 | var ModelUtil = { 2 | show : function (_html) { 3 | $('.modal-body').html(_html); 4 | $('#modal').modal({ 5 | backdrop: 'static' 6 | }); 7 | }, 8 | clickHide : function (_div) { 9 | $(document).on('click', _div, function() { 10 | $('#modal').modal('hide'); 11 | }); 12 | } 13 | }; -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/ShelfService.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service; 2 | 3 | import java.util.List; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | 7 | import com.microc.novel.basic.model.Books; 8 | 9 | public interface ShelfService { 10 | 11 | List findShelfBooks(HttpServletRequest request); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/BooksService.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Books; 6 | import com.microc.novel.basic.util.Pager; 7 | 8 | public interface BooksService { 9 | 10 | List find(Pager pager, String category, String name); 11 | 12 | Books findById(String id); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/books/fragment.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 |
5 |
6 | 7 | 8 | 9 |
10 |
${books.name}
11 |
12 |
-------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/mapper/BooksUrlMapper.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.mapper; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.BooksUrl; 6 | 7 | public interface BooksUrlMapper { 8 | 9 | List list(); 10 | 11 | BooksUrl findById(String id); 12 | 13 | int insert(BooksUrl booksUrl); 14 | 15 | int update(BooksUrl booksUrl); 16 | 17 | int delete(String id); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/dao/ChapterDao.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Chapter; 6 | 7 | 8 | public interface ChapterDao { 9 | 10 | int insert(Chapter chapter); 11 | 12 | int delete(String id); 13 | 14 | int update(Chapter chapter); 15 | 16 | Chapter findById(String id); 17 | 18 | List list(String books, Integer skip, Integer size); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/dao/CategoryDao.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Category; 6 | 7 | public interface CategoryDao { 8 | 9 | int insert(Category category); 10 | 11 | int delete(String id); 12 | 13 | int update(Category category); 14 | 15 | Category findById(String id); 16 | 17 | Category findByName(String name); 18 | 19 | List list(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/mapper/CategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.mapper; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.db.DBCategory; 6 | 7 | 8 | public interface CategoryMapper { 9 | 10 | int insert(DBCategory category); 11 | 12 | int delete(String id); 13 | 14 | int update(DBCategory category); 15 | 16 | DBCategory findById(String id); 17 | 18 | List list(); 19 | 20 | DBCategory findByName(String name); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /novel_web/webapps/libs/plugins/css.js: -------------------------------------------------------------------------------- 1 | /** 2 | * css loader plugin 3 | * @author Microc 4 | */ 5 | define('css', ['onlyn'], function(onlyn) { 6 | var css = onlyn.config.map.css || []; 7 | var _loadCss = function(css) { 8 | css = onlyn.path(css, '.css'); 9 | var link = document.createElement('link'); 10 | link.rel = 'stylesheet'; 11 | link.type = 'text/css'; 12 | link.href = css; 13 | document.getElementsByTagName('head')[0].appendChild(link); 14 | } 15 | for(var i in css) { 16 | _loadCss(css[i]); 17 | } 18 | return { 19 | css: _loadCss 20 | }; 21 | }); -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/mapper/ChapterMapper.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.mapper; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.microc.novel.basic.model.db.DBChapter; 8 | 9 | public interface ChapterMapper { 10 | 11 | int insert(DBChapter chapter); 12 | 13 | int delete(String id); 14 | 15 | int update(DBChapter chapter); 16 | 17 | DBChapter findById(String id); 18 | 19 | List listByBooks(@Param("bookId") String bookId, @Param("skip") Integer skip, @Param("length") Integer length); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/dao/BooksDao.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Books; 6 | import com.microc.novel.basic.model.Suggestion; 7 | 8 | public interface BooksDao { 9 | 10 | int insert(Books books); 11 | 12 | int delete(String id); 13 | 14 | int update(Books books); 15 | 16 | Books findById(String id); 17 | 18 | List list(String category, String name, Integer skip, Integer size); 19 | 20 | int count(String category, String name); 21 | //提交意见反馈 22 | void suggestionSubmit(Suggestion sug); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/js/comm.js: -------------------------------------------------------------------------------- 1 | /** 2 | * common method 3 | */ 4 | "use strict"; 5 | var initImageEvent = function() { 6 | $("img").one('error', function() { 7 | this.src = "http://www.lingdiankanshu.com/img/0/527/527s.jpg"; 8 | }); 9 | $(window).resize(function() { 10 | $("img.books").height(function() { 11 | return $(this).width() / 3 * 4; 12 | }); 13 | }).resize(); 14 | }; 15 | var initButtonEvent = function() { 16 | $("[data-refresh]").click(function() { 17 | location.reload(); 18 | }); 19 | }; 20 | 21 | /** 22 | * common init 23 | */ 24 | $(function() { 25 | initImageEvent(); 26 | initButtonEvent(); 27 | }); 28 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/BooksUrl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model; 2 | 3 | public class BooksUrl { 4 | 5 | private String id; 6 | private String name; 7 | private String url; 8 | 9 | public String getId() { 10 | return id; 11 | } 12 | 13 | public void setId(String id) { 14 | this.id = id; 15 | } 16 | 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public void setName(String name) { 22 | this.name = name; 23 | } 24 | 25 | public String getUrl() { 26 | return url; 27 | } 28 | 29 | public void setUrl(String url) { 30 | this.url = url; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ja.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Japanese translation for bootstrap-datetimepicker 3 | * Norio Suzuki 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ja'] = { 7 | days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"], 8 | daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"], 9 | daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"], 10 | months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], 11 | monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], 12 | today: "今日", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_basic/src/main/resources/beans/spring-beans.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/ChapterService.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Chapter; 6 | 7 | /** 8 | * 9 | * @author sun 10 | * ChapterService 11 | */ 12 | public interface ChapterService { 13 | /** 14 | * 查询所有章节 15 | * 16 | * */ 17 | List findAll(String bookId); 18 | /** 19 | * 根据Id查询 20 | * 21 | * */ 22 | Chapter findById(String string); 23 | /** 24 | * 添加章节 25 | * 26 | * */ 27 | void add(Chapter chapter); 28 | /** 29 | * 更新章节 30 | * 31 | * */ 32 | void update(Chapter chapter); 33 | /** 34 | * 删除章节 35 | * 36 | * */ 37 | void delete(String[] marked); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service; 2 | 3 | import java.util.List; 4 | 5 | import com.microc.novel.basic.model.Category; 6 | 7 | /** 8 | * 9 | * @author sun 10 | * @createTime 下午4:05:47 11 | * 广告block Service 12 | */ 13 | public interface CategoryService { 14 | 15 | /** 16 | * 查询所有分类 17 | * */ 18 | List findAll(); 19 | 20 | /** 21 | * 添加分类 22 | * */ 23 | void add(Category category); 24 | 25 | /** 26 | * 根据Id查询 27 | * */ 28 | Category findById(String id); 29 | 30 | /** 31 | * 更新分类 32 | * */ 33 | void update(Category category); 34 | 35 | /** 36 | * 删除分类 37 | * */ 38 | void delete(String[] marked); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/datetimepicker.zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified Chinese translation for bootstrap-datetimepicker 3 | * Yuan Cheung 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['zh-CN'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今天", 13 | suffix: [], 14 | meridiem: ["上午", "下午"] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.zh-TW.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Traditional Chinese translation for bootstrap-datetimepicker 3 | * Rung-Sheng Jang 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['zh-TW'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今天", 13 | suffix: [], 14 | meridiem: ["上午", "下午"] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/category/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 | 5 |
6 | 7 |
8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 |
-------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/impl/LoginServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service.impl; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | /** 5 | * @author sun 6 | * */ 7 | import org.springframework.stereotype.Service; 8 | 9 | import com.novel.cms.service.LoginService; 10 | @Service 11 | public class LoginServiceImpl implements LoginService { 12 | 13 | @Value("${username}") 14 | private String username; 15 | 16 | @Value("${password}") 17 | private String password; 18 | 19 | @Override 20 | public boolean login(String id, String password) { 21 | if(username.equals(id.trim()) && password.equals(password.trim())){ 22 | return true; 23 | }else{ 24 | return false; 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.hr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Croatian localisation 3 | */ 4 | ;(function($){ 5 | $.fn.datetimepicker.dates['hr'] = { 6 | days: ["Nedjelja", "Ponedjelja", "Utorak", "Srijeda", "Četrtak", "Petak", "Subota", "Nedjelja"], 7 | daysShort: ["Ned", "Pon", "Uto", "Srr", "Čet", "Pet", "Sub", "Ned"], 8 | daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"], 9 | months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"], 10 | monthsShort: ["Sije", "Velj", "Ožu", "Tra", "Svi", "Lip", "Jul", "Kol", "Ruj", "Lis", "Stu", "Pro"], 11 | today: "Danas", 12 | suffix: [], 13 | meridiem: [] 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ko.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Korean translation for bootstrap-datetimepicker 3 | * Gu Youn 4 | * Baekjoon Choi 5 | */ 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['ko'] = { 8 | days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"], 9 | daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"], 10 | daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"], 11 | months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], 12 | monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], 13 | suffix: [], 14 | meridiem: ["오전", "오후"], 15 | today: "오늘", 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/utils/MatcherUtil.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.utils; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.regex.Matcher; 6 | import java.util.regex.Pattern; 7 | 8 | public class MatcherUtil { 9 | 10 | public static List subGroup(String content, String regex) { 11 | Pattern pattern = Pattern.compile(regex); 12 | Matcher matcher = pattern.matcher(content); 13 | List list = new ArrayList<>(); 14 | while(matcher.find()) { 15 | String[] row = new String[matcher.groupCount()]; 16 | for (int i = 0; i < row.length; i++) { 17 | row[i] = matcher.group(i + 1); 18 | } 19 | list.add(row); 20 | } 21 | return list; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.id.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bahasa translation for bootstrap-datetimepicker 3 | * Azwar Akbar 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['id'] = { 7 | days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"], 8 | daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"], 9 | daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"], 10 | months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"], 12 | suffix: [], 13 | meridiem: [] 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ua.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Ukrainian translation for bootstrap-datepicker 3 | * Igor Polynets 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ua'] = { 7 | days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четверг", "П'ятниця", "Субота", "Неділя"], 8 | daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"], 9 | daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"], 10 | months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], 11 | monthsShort: ["Січ", "Лют", "Бер", "Квт", "Трв", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Грд"], 12 | today: "Сьогодні", 13 | weekStart: 1 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.he.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hebrew translation for bootstrap-datetimepicker 3 | * Sagie Maoz 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['he'] = { 7 | days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"], 8 | daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], 9 | daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], 10 | months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], 11 | monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"], 12 | today: "היום", 13 | suffix: [], 14 | meridiem: [], 15 | rtl: true 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ms.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Malay translation for bootstrap-datetimepicker 3 | * Ateman Faiz 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ms'] = { 7 | days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"], 8 | daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"], 9 | daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"], 10 | months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"], 12 | today: "Hari Ini", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.no.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Norwegian translation for bootstrap-datetimepicker 3 | * Rune Warhuus 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['no'] = { 7 | days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], 8 | daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], 9 | daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], 10 | months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], 12 | today: "I Dag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.tr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Turkish translation for bootstrap-datetimepicker 3 | * Serkan Algur 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['tr'] = { 7 | days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"], 8 | daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"], 9 | daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"], 10 | months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], 11 | monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"], 12 | today: "Bugün", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | 18 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ca.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Catalan translation for bootstrap-datetimepicker 3 | * J. Garcia 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ca'] = { 7 | days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"], 8 | daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"], 9 | daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"], 10 | months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], 11 | monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"], 12 | today: "Avui", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.da.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Danish translation for bootstrap-datetimepicker 3 | * Christian Pedersen 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['da'] = { 7 | days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], 8 | daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], 9 | daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], 10 | months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "I Dag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.el.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Greek translation for bootstrap-datetimepicker 3 | */ 4 | ;(function($){ 5 | $.fn.datetimepicker.dates['el'] = { 6 | days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"], 7 | daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"], 8 | daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"], 9 | months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], 10 | monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"], 11 | today: "Σήμερα", 12 | suffix: [], 13 | meridiem: [] 14 | }; 15 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.rs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Serbian cyrillic translation for bootstrap-datetimepicker 3 | * Bojan Milosavlević 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['rs'] = { 7 | days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"], 8 | daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"], 9 | daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"], 10 | months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"], 11 | monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"], 12 | today: "Данас", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.sv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Swedish translation for bootstrap-datetimepicker 3 | * Patrik Ragnarsson 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['sv'] = { 7 | days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"], 8 | daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"], 9 | daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"], 10 | months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "I Dag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.th.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Thai translation for bootstrap-datetimepicker 3 | * Suchau Jiraprapot 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['th'] = { 7 | days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"], 8 | daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], 9 | daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], 10 | months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], 11 | monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."], 12 | today: "วันนี้", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.bg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bulgarian translation for bootstrap-datetimepicker 3 | * Apostol Apostolov 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['bg'] = { 7 | days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"], 8 | daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"], 9 | daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"], 10 | months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], 11 | monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"], 12 | today: "днес", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.es.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Spanish translation for bootstrap-datetimepicker 3 | * Bruno Bonamin 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['es'] = { 7 | days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"], 8 | daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"], 9 | daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"], 10 | months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], 11 | monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"], 12 | today: "Hoy", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.nl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dutch translation for bootstrap-datetimepicker 3 | * Reinier Goltstein 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['nl'] = { 7 | days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], 8 | daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], 9 | daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], 10 | months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Vandaag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Serbian latin translation for bootstrap-datetimepicker 3 | * Bojan Milosavlević 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['rs'] = { 7 | days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"], 8 | daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"], 9 | daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"], 10 | months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Danas", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Russian translation for bootstrap-datetimepicker 3 | * Victor Taranenko 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ru'] = { 7 | days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"], 8 | daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"], 9 | daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"], 10 | months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], 11 | monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"], 12 | today: "Сегодня", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.sl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Slovene translation for bootstrap-datetimepicker 3 | * Gregor Rudolf 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['sl'] = { 7 | days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"], 8 | daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"], 9 | daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"], 10 | months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Danes", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.nb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Norwegian (bokmål) translation for bootstrap-datetimepicker 3 | * Fredrik Sundmyhr 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['nb'] = { 7 | days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], 8 | daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], 9 | daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], 10 | months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], 12 | today: "I Dag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.uk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Ukrainian translation for bootstrap-datetimepicker 3 | * Andrey Vityuk 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['uk'] = { 7 | days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя"], 8 | daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"], 9 | daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"], 10 | months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], 11 | monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"], 12 | today: "Сьогодні", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/NovelService.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import com.microc.novel.basic.model.Books; 8 | 9 | /** 10 | * 11 | * @author sun 12 | * @createTime 下午4:05:47 13 | * Service 14 | */ 15 | public interface NovelService { 16 | /** 17 | * 查询所有小说(根据分类) 18 | * 19 | * */ 20 | List findAll(String cateGoryId); 21 | /** 22 | * 添加书籍 23 | * 24 | * */ 25 | void add(Books books, MultipartFile file); 26 | /** 27 | * 根据Id查询书籍 28 | * 29 | * */ 30 | Books findById(String string); 31 | /** 32 | * 更新书籍 33 | * 34 | * */ 35 | void update(Books books, MultipartFile file); 36 | /** 37 | * 删除书籍 38 | * 39 | * */ 40 | void delete(String[] marked); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/chapter/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 | 5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
-------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.hu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hungarian translation for bootstrap-datetimepicker 3 | * darevish 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['hu'] = { 7 | days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"], 8 | daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"], 9 | daysMin: ["V", "H", "K", "Sze", "Cs", "P", "Szo", "V"], 10 | months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"], 12 | today: "Ma", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/Category.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model; 2 | 3 | public class Category { 4 | 5 | private String id; 6 | 7 | private String name; 8 | 9 | private Integer index; 10 | 11 | private String url; 12 | 13 | public String getId() { 14 | return id; 15 | } 16 | 17 | public void setId(String id) { 18 | this.id = id; 19 | } 20 | 21 | public String getName() { 22 | return name; 23 | } 24 | 25 | public void setName(String name) { 26 | this.name = name; 27 | } 28 | 29 | public Integer getIndex() { 30 | return index; 31 | } 32 | 33 | public void setIndex(Integer index) { 34 | this.index = index; 35 | } 36 | 37 | public String getUrl() { 38 | return url; 39 | } 40 | 41 | public void setUrl(String url) { 42 | this.url = url; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ro.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Romanian translation for bootstrap-datetimepicker 3 | * Cristian Vasile 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ro'] = { 7 | days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"], 8 | daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"], 9 | daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"], 10 | months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"], 11 | monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"], 12 | today: "Astăzi", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Arabic translation for bootstrap-datetimepicker 3 | * Ala' Mohammad 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ar'] = { 7 | days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"], 8 | daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"], 9 | daysMin: ["أح", "إث", "ث", "أر", "خ", "ج", "س", "أح"], 10 | months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], 11 | monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], 12 | today: "هذا اليوم", 13 | suffix: [], 14 | meridiem: [], 15 | rtl: true 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.is.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Icelandic translation for bootstrap-datetimepicker 3 | * Hinrik Örn Sigurðsson 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['is'] = { 7 | days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"], 8 | daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"], 9 | daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"], 10 | months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"], 12 | today: "Í Dag", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Brazilian translation for bootstrap-datetimepicker 3 | * Cauan Cabral 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['pt-BR'] = { 7 | format: 'dd/mm/yyyy', 8 | days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], 9 | daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], 10 | daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], 11 | months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], 12 | monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], 13 | today: "Hoje", 14 | suffix: [], 15 | meridiem: [] 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/mapper/BooksMapper.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.mapper; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.microc.novel.basic.model.Suggestion; 8 | import com.microc.novel.basic.model.db.DBBooks; 9 | 10 | 11 | public interface BooksMapper { 12 | 13 | int insert(DBBooks books); 14 | 15 | int delete(String id); 16 | 17 | int update(DBBooks books); 18 | 19 | DBBooks findById(String id); 20 | 21 | List listByCategory(@Param("categoryId") String categoryId, @Param("name") String name, @Param("skip") Integer skip, @Param("length") Integer length); 22 | 23 | int countByCategory(@Param("categoryId") String category, @Param("name") String name); 24 | 25 | //提交意见反馈 26 | void suggestionSubmit(Suggestion suggestion); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/db/DBCategory.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model.db; 2 | 3 | public class DBCategory { 4 | 5 | private String id; 6 | 7 | private String name; 8 | 9 | private Integer index; 10 | 11 | private String url; 12 | 13 | public String getId() { 14 | return id; 15 | } 16 | 17 | public void setId(String id) { 18 | this.id = id; 19 | } 20 | 21 | public String getName() { 22 | return name; 23 | } 24 | 25 | public void setName(String name) { 26 | this.name = name; 27 | } 28 | 29 | public Integer getIndex() { 30 | return index; 31 | } 32 | 33 | public void setIndex(Integer index) { 34 | this.index = index; 35 | } 36 | 37 | public String getUrl() { 38 | return url; 39 | } 40 | 41 | public void setUrl(String url) { 42 | this.url = url; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.de.js: -------------------------------------------------------------------------------- 1 | /** 2 | * German translation for bootstrap-datetimepicker 3 | * Sam Zurcher 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['de'] = { 7 | days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"], 8 | daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"], 9 | daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"], 10 | months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], 11 | monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], 12 | today: "Heute", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1, 16 | format: "dd.mm.yyyy" 17 | }; 18 | }(jQuery)); 19 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.fi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Finnish translation for bootstrap-datetimepicker 3 | * Jaakko Salonen 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['fi'] = { 7 | days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"], 8 | daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"], 9 | daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"], 10 | months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], 11 | monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"], 12 | today: "tänään", 13 | suffix: [], 14 | meridiem: [] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.sk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Slovak translation for bootstrap-datetimepicker 3 | * Marek Lichtner 4 | * Fixes by Michal Remiš 5 | */ 6 | ;(function($){ 7 | $.fn.datetimepicker.dates["sk"] = { 8 | days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"], 9 | daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"], 10 | daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"], 11 | months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], 12 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"], 13 | today: "Dnes", 14 | suffix: [], 15 | meridiem: [] 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_basic/src/main/resources/com/microc/novel/basic/mapper/BooksUrlMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 13 | insert into books_url values(#{id}, #{name}, #{url}); 14 | 15 | 16 | 17 | update books_url set name = #{name}, url = #{url} where id = #{id}; 18 | 19 | 20 | 21 | delete from books_url where id = #{id}; 22 | 23 | 24 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.fr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * French translation for bootstrap-datetimepicker 3 | * Nico Mollet 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['fr'] = { 7 | days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"], 8 | daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"], 9 | daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"], 10 | months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], 11 | monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"], 12 | today: "Aujourd'hui", 13 | suffix: [], 14 | meridiem: ["am", "pm"], 15 | weekStart: 1, 16 | format: "dd/mm/yyyy" 17 | }; 18 | }(jQuery)); 19 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.pl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Polish translation for bootstrap-datetimepicker 3 | * Robert 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['pl'] = { 7 | days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], 8 | daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"], 9 | daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"], 10 | months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], 11 | monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"], 12 | today: "Dzisiaj", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_crawler/src/main/resources/beans/spring-beans.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.it.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Italian translation for bootstrap-datetimepicker 3 | * Enrico Rubboli 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['it'] = { 7 | days: ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica"], 8 | daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"], 9 | daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"], 10 | months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], 11 | monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], 12 | today: "Oggi", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1, 16 | format: "dd/mm/yyyy hh:ii:ss" 17 | }; 18 | }(jQuery)); 19 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.pt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Portuguese translation for bootstrap-datetimepicker 3 | * Original code: Cauan Cabral 4 | * Tiago Melo 5 | */ 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['pt'] = { 8 | days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], 9 | daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], 10 | daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], 11 | months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], 12 | monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], 13 | suffix: [], 14 | meridiem: ["am","pm"], 15 | today: "Hoje" 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/js/cookie.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author cuichuping 3 | */ 4 | var DB = (function($) { "use strict"; $.cookie.json = true; var _get = function(name) { return $.cookie(name); }; var _set = function(name, value) { $.cookie(name, value, { expires: 365, path: '/' }); }; var _addToSet = function(name, value) { var arr = $.cookie(name) || []; if(arr.indexOf(value) == -1) { arr.push(value); _set(name, arr); } }; var _pull = function(name, value) { var arr = $.cookie(name); if(arr.indexOf(value) != -1) { arr = arr.filter(function(elem) {return elem != value}); _set(name, arr); } }; var _push = function(name, value) { var arr = $.cookie(name); arr.push(value); _set(name, arr); }; var _pop = function(name) { var arr = $.cookie(name); var value = arr.pop(); _set(name, arr); return value; }; return { get: _get, set: _set, addToSet: _addToSet, pull: _pull, push: _push, pop: _pop }; })($); -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/head.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=UTF-8" language="java"%> 2 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 17 | -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/main/Main.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.main; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | 5 | import com.microc.novel.crawler.consts.Constants; 6 | import com.microc.novel.crawler.service.BooksService; 7 | 8 | public class Main { 9 | 10 | public static void main(String[] args) { 11 | run(); 12 | } 13 | 14 | public static void run() { 15 | ClassPathXmlApplicationContext applicationContext = 16 | new ClassPathXmlApplicationContext("classpath*:/beans/*"); 17 | BooksService booksService = applicationContext.getBean(BooksService.class); 18 | for(String category : Constants.CATEGORY_URL.keySet()) { 19 | booksService.crawler(category); 20 | System.out.println("正在启动 " + category); 21 | } 22 | System.out.println("爬虫启动完毕"); 23 | applicationContext.close(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.cs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Czech translation for bootstrap-datetimepicker 3 | * Matěj Koubík 4 | * Fixes by Michal Remiš 5 | */ 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['cs'] = { 8 | days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"], 9 | daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"], 10 | daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"], 11 | months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], 12 | monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"], 13 | today: "Dnes", 14 | suffix: [], 15 | meridiem: [], 16 | weekStart: 1, 17 | format: "dd.mm.yyyy" 18 | }; 19 | }(jQuery)); 20 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.lv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Latvian translation for bootstrap-datetimepicker 3 | * Artis Avotins 4 | */ 5 | 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['lv'] = { 8 | days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"], 9 | daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"], 10 | daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"], 11 | months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], 12 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."], 13 | today: "Šodien", 14 | suffix: [], 15 | meridiem: [], 16 | weekStart: 1 17 | }; 18 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.ee.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Estonian translation for bootstrap-datetimepicker 3 | * Rene Korss 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['ee'] = { 7 | days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"], 8 | daysShort: ["P", "E", "T", "K", "N", "R", "L", "P"], 9 | daysMin: ["P", "E", "T", "K", "N", "R", "L", "P"], 10 | months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"], 11 | monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"], 12 | today: "Täna", 13 | suffix: [], 14 | meridiem: [], 15 | weekStart: 1, 16 | format: "dd.mm.yyyy hh:ii" 17 | }; 18 | }(jQuery)); -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/login.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $("#loginForm").submit(function() { 3 | var id = $("input[name=id]").val(); 4 | var password = $("input[name=password]").val(); 5 | if(id == "" || id == null){ 6 | $msg("账号为空,请填写账号"); 7 | return false; 8 | } 9 | if(password == "" || password == null){ 10 | $msg("密码为空,请填写密码"); 11 | return false; 12 | } 13 | }); 14 | $("#loginForm input[type=submit]").mousedown(function(){ 15 | $(this).css("background-position","0 -48px"); 16 | }).mouseup(function(){ 17 | $(this).css("background-position","0 0"); 18 | }); 19 | var $msg = function(_m) { 20 | if(_m != undefined) { 21 | var _msg = $("#msg"); 22 | _msg.html(_m); 23 | _msg.css("margin-left", -_msg.width()/2); 24 | _msg.show(); 25 | } 26 | }; 27 | $msg(); 28 | }); -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/my.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | .my_photo { 7 | width: 100%; 8 | height: 40%; 9 | background-color: green; 10 | position: absolute; 11 | text-align: center; 12 | 13 | } 14 | 15 | .personicon { 16 | margin-top: 14%; 17 | margin-bottom: 30%; 18 | } 19 | 20 | .my_photo > .icon { 21 | font-size: 45px; 22 | color: white; 23 | } 24 | 25 | .my_login { 26 | width: 100%; 27 | position: absolute; 28 | text-align: center; 29 | 30 | } 31 | 32 | .my_login > .btn-positive { 33 | margin-top: 30%; 34 | } 35 | 36 | .my_center { 37 | padding-top: 70%; 38 | } 39 | 40 | .icon-gear{ 41 | color: #523131; 42 | } 43 | 44 | .icon-compose { 45 | color: #1148a5; 46 | } 47 | 48 | .icon-info { 49 | color: #820591; 50 | } 51 | 52 | .icon-home { 53 | color: #e3a415; 54 | } 55 | 56 | .table-view-cell>a:not(.btn) { 57 | margin: -2% -25% -2% -5%; 58 | } -------------------------------------------------------------------------------- /novel_web/src/main/resource/beans/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | NON_NULL 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /novel_cms/webapps/resources/js/status.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | 3 | $(".statusBtn").click(function () { 4 | var _url = "?_method=head&id=" + $(this).attr("data-id") + "¤t=" + $(this).attr("data-current") + "&next=" + $(this).attr("data-next"); 5 | $.ajax({ 6 | url: _url, 7 | async: true, 8 | dataType: 'json', 9 | success: function(data) { 10 | if(data == true) { 11 | dialog({ content: '修改状态成功!' }).show(); 12 | setTimeout(function () { location.reload(); }, 500); 13 | } else { 14 | var _dialog = dialog({ content: '修改状态失败!' }); 15 | _dialog.show(); 16 | setTimeout(function () { _dialog.close().remove(); }, 500); 17 | } 18 | }, 19 | error: function() { 20 | var _dialog = dialog({ content: '请求失败!' }); 21 | _dialog.show(); 22 | setTimeout(function () { _dialog.close().remove(); }, 500); 23 | } 24 | }); 25 | }); 26 | }); -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/beans/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | NON_NULL 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/js/detail.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | "use strict"; 3 | var initImageEvent = function() { 4 | $("#detail_img").one('error', function() { 5 | this.src = "http://www.lingdiankanshu.com/img/0/527/527s.jpg"; 6 | }); 7 | $(window).resize(function() { 8 | $("#detail_img").height(function() { 9 | return $(this).width() / 3 * 4; 10 | }); 11 | $("#bg_detail").height($("#detail_img").height() + 30); 12 | $(".detail").height($("#detail_img").height()); 13 | }).resize(); 14 | }; 15 | 16 | var initButtonEvent = function() { 17 | $("[data-refresh]").click(function() { 18 | location.reload(); 19 | }); 20 | }; 21 | 22 | $(function() { 23 | initImageEvent(); 24 | initButtonEvent(); 25 | $("[data-add]").click(function() { 26 | var id = $(this).data("add"); 27 | DB.addToSet("books", $(this).data("add")); 28 | alert("已添加到书架!"); 29 | }); 30 | }); 31 | 32 | })($); -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/utils/HttpUtil.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.utils; 2 | 3 | import static com.microc.novel.crawler.consts.Constants.DEFAULT_CHARSET; 4 | 5 | import java.io.BufferedReader; 6 | import java.io.InputStreamReader; 7 | import java.net.URL; 8 | 9 | public class HttpUtil { 10 | 11 | private final static String LINE_SEPARATOR = System.getProperty("line.separator"); 12 | 13 | public static String loadUrlToString(String sUrl) { 14 | try { 15 | URL url = new URL(sUrl); 16 | BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), DEFAULT_CHARSET)); 17 | StringBuilder result = new StringBuilder(); 18 | for (String temp; (temp = reader.readLine()) != null; ) { 19 | result.append(temp).append(LINE_SEPARATOR); 20 | } 21 | return result.toString(); 22 | } catch (Exception e) { 23 | return null; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/controller/ShelfController.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.controller; 2 | 3 | import java.util.List; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.ui.ModelMap; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | 12 | import com.microc.novel.basic.model.Books; 13 | import com.microc.novel.web.service.ShelfService; 14 | 15 | @Controller 16 | public class ShelfController { 17 | 18 | @Autowired 19 | private ShelfService shelfService; 20 | 21 | @RequestMapping("/shelf") 22 | public String shelf(HttpServletRequest request, ModelMap map) { 23 | List booksList = shelfService.findShelfBooks(request); 24 | map.put("booksList", booksList); 25 | return "shelf/list"; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.lt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Lithuanian translation for bootstrap-datetimepicker 3 | * Šarūnas Gliebus 4 | */ 5 | 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['lt'] = { 8 | days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"], 9 | daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"], 10 | daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"], 11 | months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"], 12 | monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"], 13 | today: "Šiandien", 14 | suffix: [], 15 | meridiem: [], 16 | weekStart: 1 17 | }; 18 | }(jQuery)); 19 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/comm/foot.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 21 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/datetimepicker/js/locales/bootstrap-datetimepicker.sw.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Swahili translation for bootstrap-datetimepicker 3 | * Edwin Mugendi 4 | * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku 5 | */ 6 | ;(function($){ 7 | $.fn.datetimepicker.dates['sw'] = { 8 | days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"], 9 | daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"], 10 | daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"], 11 | months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], 12 | monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], 13 | today: "Leo", 14 | suffix: [], 15 | meridiem: [] 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/books/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | <%@ include file="../comm/head.jsp" %> 10 | 11 | 12 |
13 | 14 | 15 | 16 |

书城

17 | 18 | 19 | 20 |
21 |
22 |
23 | 24 |
25 |
26 | <%@ include file="../comm/foot.jsp" %> 27 | 28 | -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/impl/MyServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service.impl; 2 | 3 | import java.util.Date; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.microc.novel.basic.dao.BooksDao; 9 | import com.microc.novel.basic.model.Suggestion; 10 | import com.microc.novel.basic.util.Generator; 11 | import com.microc.novel.web.service.MyService; 12 | 13 | 14 | @Service 15 | public class MyServiceImpl implements MyService { 16 | 17 | @Autowired 18 | private BooksDao dao; 19 | 20 | @Override 21 | public void suggestionSubmit(String contactWay, String suggestion) { 22 | 23 | Suggestion sug = new Suggestion(); 24 | sug.setId((String)Generator.generate()); 25 | sug.setContactWay(contactWay); 26 | sug.setSuggestion(suggestion); 27 | sug.setCreateTime(new Date()); 28 | 29 | dao.suggestionSubmit(sug); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/chapter/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 | 5 | 6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 |
-------------------------------------------------------------------------------- /novel_web/webapps/resources/js/books.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | "use strict"; 3 | var initScrollEvent = function() { 4 | $(".content").scroll(function(e) { 5 | var $content = $(this).children(":first-child"); 6 | if($(this).scrollTop() + $(this).outerHeight() >= $content.outerHeight() && !$content.data("loading")) { 7 | $content.data("loading", true); 8 | $("#title").data("title", $("#title").text()); 9 | $("#title").text("正在加载..."); 10 | var pageNum = $content.data("pageNum"); 11 | pageNum = pageNum ? pageNum + 1 : 2; 12 | $content.data("pageNum", pageNum); 13 | $.get("books/fragment?index=" + pageNum, function(data, status) { 14 | if("success" == status) { 15 | $content.data("loading", false); 16 | $("#title").text($("#title").data("title")); 17 | $content.append(data); 18 | initImageEvent(); 19 | } 20 | }); 21 | } 22 | }); 23 | }; 24 | $(function() { 25 | initScrollEvent(); 26 | }); 27 | })($); -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/my/suggestion.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | <%@ include file="../comm/head.jsp" %> 9 | 10 | 11 |
12 | 13 | 14 | 15 |

意见反馈

16 |
17 |
18 |
19 | 20 | 21 | 22 |
23 |
24 | <%@ include file="../comm/foot.jsp" %> 25 | 26 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/Suggestion.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model; 2 | 3 | import java.util.Date; 4 | 5 | public class Suggestion { 6 | 7 | private String id; 8 | /** 9 | * 联系方式 10 | * */ 11 | private String contactWay; 12 | /** 13 | * 意见建议 14 | * */ 15 | private String suggestion; 16 | /** 17 | * 创建时间 18 | * */ 19 | private Date createTime; 20 | 21 | public String getId() { 22 | return id; 23 | } 24 | public void setId(String id) { 25 | this.id = id; 26 | } 27 | public String getContactWay() { 28 | return contactWay; 29 | } 30 | public void setContactWay(String contactWay) { 31 | this.contactWay = contactWay; 32 | } 33 | public String getSuggestion() { 34 | return suggestion; 35 | } 36 | public void setSuggestion(String suggestion) { 37 | this.suggestion = suggestion; 38 | } 39 | public Date getCreateTime() { 40 | return createTime; 41 | } 42 | public void setCreateTime(Date createTime) { 43 | this.createTime = createTime; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/callus.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | #contectWay { 7 | padding-top: 6px; 8 | padding-bottom: 6px; 9 | margin-left: 10px; 10 | font-size: 14px; 11 | } 12 | 13 | .item_image { 14 | width: 32px; 15 | height: 32px; 16 | margin: -4px 0; 17 | } 18 | 19 | #qq_number { 20 | line-height: 24px; 21 | font-size: 14px; 22 | } 23 | 24 | .call { 25 | position: relative; 26 | padding: 11px 15px 11px 15px; 27 | overflow: hidden; 28 | border-bottom: 1px solid #ddd; 29 | } 30 | 31 | #publicNum { 32 | font-size: 13px; 33 | color: #7f9b95; 34 | margin-bottom: 11px; 35 | } 36 | 37 | #findPublic { 38 | font-size: 15px; 39 | padding-bottom: 10px; 40 | } 41 | 42 | #publicFind { 43 | font-size: 14px; 44 | color: #7f9b95; 45 | } 46 | 47 | #erweima { 48 | margin-top: 5px; 49 | margin-left: 25%; 50 | border: 1px solid #bdaaaa; 51 | } 52 | 53 | #erweimaplu { 54 | margin-top: 5px; 55 | margin-bottom: 5px; 56 | margin-left: 3%; 57 | width: 90%; 58 | border: 1px solid #bdaaaa; 59 | } -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/util/ConvertUtil.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.util; 2 | 3 | import java.beans.IntrospectionException; 4 | import java.beans.PropertyDescriptor; 5 | import java.lang.reflect.Method; 6 | import java.util.LinkedHashMap; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | 11 | /** 12 | * 13 | * @author cuichuping 14 | * 15 | */ 16 | public class ConvertUtil { 17 | 18 | public static Map listToMap(List list, String key) { 19 | Map map = new LinkedHashMap<>(); 20 | if(list.isEmpty()) return map; 21 | Class clazz = list.get(0).getClass(); 22 | try { 23 | Method method = new PropertyDescriptor(key, clazz).getReadMethod(); 24 | for (T object : list) { 25 | map.put(method.invoke(object), object); 26 | } 27 | } catch (IntrospectionException e) { 28 | throw new RuntimeException("field ["+key+"] not found", e); 29 | } catch (Exception e) { 30 | throw new RuntimeException(e); 31 | } 32 | return map; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/category/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 | 5 |
6 | 7 |
8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
-------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/impl/BooksServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service.impl; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.microc.novel.basic.dao.BooksDao; 9 | import com.microc.novel.basic.model.Books; 10 | import com.microc.novel.basic.util.Pager; 11 | import com.microc.novel.web.service.BooksService; 12 | 13 | 14 | @Service 15 | public class BooksServiceImpl implements BooksService { 16 | 17 | @Autowired 18 | private BooksDao booksDao; 19 | 20 | @Override 21 | public List find(Pager pager, String category, String name) { 22 | List result = booksDao.list(category, name, pager.getBeginRow(), pager.getRowCount()); 23 | pager.setResult(result); 24 | pager.setTotalCount(booksDao.count(category, name)); 25 | return result; 26 | } 27 | 28 | @Override 29 | public Books findById(String id) { 30 | return booksDao.findById(id); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/Chapter.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model; 2 | 3 | public class Chapter { 4 | 5 | private String id; 6 | 7 | private String name; 8 | 9 | private String bookId; 10 | 11 | private String content; 12 | 13 | private Integer index; 14 | 15 | public String getId() { 16 | return id; 17 | } 18 | 19 | public void setId(String id) { 20 | this.id = id; 21 | } 22 | 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | public void setName(String name) { 28 | this.name = name; 29 | } 30 | 31 | public String getBookId() { 32 | return bookId; 33 | } 34 | 35 | public void setBookId(String bookId) { 36 | this.bookId = bookId; 37 | } 38 | 39 | public String getContent() { 40 | return content; 41 | } 42 | 43 | public void setContent(String content) { 44 | this.content = content; 45 | } 46 | 47 | public Integer getIndex() { 48 | return index; 49 | } 50 | 51 | public void setIndex(Integer index) { 52 | this.index = index; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /novel_cms/src/main/resource/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=debug,stdout,logfile 2 | 3 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u63A7\u5236\u53F0 ### 4 | 5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 6 | 7 | #log4j.appender.stdout.Target=System.err 8 | 9 | log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 10 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u6587\u4EF6\uFF1Ajbit.log ### 11 | log4j.appender.logfile=org.apache.log4j.FileAppender 12 | log4j.appender.logfile.File=jbit.log 13 | log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n 15 | 16 | ###\u663E\u793ASQL\u8BED\u53E5\u90E8\u5206 17 | log4j.logger.com.ibatis=DEBUG 18 | log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 19 | log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 20 | log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 21 | log4j.logger.java.sql.Connection=DEBUG 22 | log4j.logger.java.sql.Statement=DEBUG 23 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=debug,stdout,logfile 2 | 3 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u63A7\u5236\u53F0 ### 4 | 5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 6 | 7 | #log4j.appender.stdout.Target=System.err 8 | 9 | log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 10 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u6587\u4EF6\uFF1Ajbit.log ### 11 | log4j.appender.logfile=org.apache.log4j.FileAppender 12 | log4j.appender.logfile.File=jbit.log 13 | log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n 15 | 16 | ###\u663E\u793ASQL\u8BED\u53E5\u90E8\u5206 17 | log4j.logger.com.ibatis=DEBUG 18 | log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 19 | log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 20 | log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 21 | log4j.logger.java.sql.Connection=DEBUG 22 | log4j.logger.java.sql.Statement=DEBUG 23 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /novel_basic/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=debug,stdout,logfile 2 | 3 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u63A7\u5236\u53F0 ### 4 | 5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 6 | 7 | #log4j.appender.stdout.Target=System.err 8 | 9 | log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 10 | ### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u6587\u4EF6\uFF1Ajbit.log ### 11 | log4j.appender.logfile=org.apache.log4j.FileAppender 12 | log4j.appender.logfile.File=/data/logs/novel/info.log 13 | log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n 15 | 16 | ###\u663E\u793ASQL\u8BED\u53E5\u90E8\u5206 17 | log4j.logger.com.ibatis=DEBUG 18 | log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 19 | log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 20 | log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 21 | log4j.logger.java.sql.Connection=DEBUG 22 | log4j.logger.java.sql.Statement=DEBUG 23 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/impl/CategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service.impl; 2 | 3 | /** 4 | * @author sun 5 | * */ 6 | import java.util.List; 7 | 8 | import javax.annotation.Resource; 9 | 10 | import org.springframework.stereotype.Service; 11 | 12 | import com.microc.novel.basic.dao.CategoryDao; 13 | import com.microc.novel.basic.model.Category; 14 | import com.novel.cms.service.CategoryService; 15 | @Service 16 | public class CategoryServiceImpl implements CategoryService { 17 | 18 | private @Resource CategoryDao dao; 19 | 20 | @Override 21 | public List findAll() { 22 | return dao.list(); 23 | } 24 | 25 | @Override 26 | public void add(Category category) { 27 | dao.insert(category); 28 | } 29 | 30 | @Override 31 | public Category findById(String id) { 32 | return dao.findById(id); 33 | } 34 | 35 | @Override 36 | public void update(Category category) { 37 | dao.update(category); 38 | } 39 | 40 | @Override 41 | public void delete(String[] marked) { 42 | for(String id : marked){ 43 | dao.delete(id); 44 | } 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/impl/ChapterServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service.impl; 2 | 3 | /** 4 | * @author sun 5 | * */ 6 | import java.util.List; 7 | 8 | import javax.annotation.Resource; 9 | 10 | import org.springframework.stereotype.Service; 11 | 12 | import com.microc.novel.basic.dao.ChapterDao; 13 | import com.microc.novel.basic.model.Chapter; 14 | import com.novel.cms.service.ChapterService; 15 | @Service 16 | public class ChapterServiceImpl implements ChapterService { 17 | 18 | private @Resource ChapterDao dao; 19 | 20 | @Override 21 | public List findAll(String bookId) { 22 | return dao.list(bookId, null, null); 23 | } 24 | 25 | @Override 26 | public Chapter findById(String string) { 27 | return dao.findById(string); 28 | } 29 | 30 | @Override 31 | public void add(Chapter chapter) { 32 | dao.insert(chapter); 33 | } 34 | 35 | @Override 36 | public void update(Chapter chapter) { 37 | dao.update(chapter); 38 | } 39 | 40 | @Override 41 | public void delete(String[] marked) { 42 | for(String id : marked){ 43 | dao.delete(id); 44 | } 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /novel_basic/src/main/resources/com/microc/novel/basic/mapper/CategoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | insert into t_category values(#{id}, #{name}, #{index}, #{url}); 6 | 7 | 8 | 9 | delete from t_category where id = #{id}; 10 | 11 | 12 | 13 | update t_category 14 | 15 | name = #{name}, `index` = #{index}, `url` = #{url} 16 | 17 | 18 | id = #{id} 19 | 20 | 21 | 22 | 25 | 26 | 29 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /novel_crawler/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | com.microc.novel.crawler 4 | novel_crawler 5 | 0.0.1-SNAPSHOT 6 | 7 | 8 | 9 | org.apache.maven.plugins 10 | maven-compiler-plugin 11 | 3.1 12 | 13 | 1.7 14 | 1.7 15 | 16 | 17 | 18 | 19 | 20 | 21 | com.microc.novel.basic 22 | novel_basic 23 | 0.0.1-SNAPSHOT 24 | 25 | 26 | org.htmlparser 27 | htmlparser 28 | 2.1 29 | 30 | 31 | 32 | utf-8 33 | 34 | -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/service/impl/BooksServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.service.impl; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.scheduling.annotation.Async; 7 | import org.springframework.stereotype.Service; 8 | 9 | import com.microc.novel.basic.dao.BooksDao; 10 | import com.microc.novel.basic.model.Books; 11 | import com.microc.novel.crawler.handler.BooksHandler; 12 | import com.microc.novel.crawler.service.BooksService; 13 | 14 | @Service 15 | public class BooksServiceImpl implements BooksService { 16 | 17 | @Autowired 18 | private BooksDao booksDao; 19 | 20 | @Async 21 | @Override 22 | public void crawler(String category) { 23 | int pageCount = BooksHandler.getPageCount(category); 24 | for (int pageNum = 1; pageNum <= pageCount; pageNum++) { 25 | System.out.println("开始爬取: " + category + ": " + pageNum); 26 | List booksList = BooksHandler.buildBooks(category, pageNum); 27 | for (Books books : booksList) { 28 | System.out.println("开始写入: " + category + ": " + pageNum + ": " + books.getName()); 29 | booksDao.insert(books); 30 | } 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/login/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | 3 | 4 | 5 | 内容管理系统 6 | 7 | 8 | 9 | 10 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 33 | 34 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/comm/head.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 我的书窝 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/db/DBChapter.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model.db; 2 | 3 | public class DBChapter { 4 | 5 | private String id; 6 | 7 | private String name; 8 | 9 | private String bookId; 10 | 11 | private Integer position; 12 | 13 | private Integer length; 14 | 15 | private Integer index; 16 | 17 | public String getId() { 18 | 19 | return id; 20 | } 21 | 22 | public void setId(String id) { 23 | this.id = id; 24 | } 25 | 26 | public String getName() { 27 | return name; 28 | } 29 | 30 | public void setName(String name) { 31 | this.name = name; 32 | } 33 | 34 | public String getBookId() { 35 | return bookId; 36 | } 37 | 38 | public void setBookId(String bookId) { 39 | this.bookId = bookId; 40 | } 41 | 42 | public Integer getPosition() { 43 | return position; 44 | } 45 | 46 | public void setPosition(Integer position) { 47 | this.position = position; 48 | } 49 | 50 | public Integer getLength() { 51 | return length; 52 | } 53 | 54 | public void setLength(Integer length) { 55 | this.length = length; 56 | } 57 | 58 | public Integer getIndex() { 59 | return index; 60 | } 61 | 62 | public void setIndex(Integer index) { 63 | this.index = index; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/shelf/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | <%@ include file="../comm/head.jsp" %> 10 | 11 | 12 |
13 | 14 | 15 | 16 |

我的书架

17 | 18 | 19 | 20 |
21 |
22 |
23 | 24 |
25 |
26 | 27 | 28 | 29 | 30 |
31 |
${books.name}
32 |
33 |
34 |
35 |
36 | <%@ include file="../comm/foot.jsp" %> 37 | 38 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/regular/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 | 5 |
6 | 7 |
8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 | 35 |
36 | 37 |
38 |
39 |
-------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/controller/BooksController.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.controller; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.ui.ModelMap; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | 10 | import com.microc.novel.basic.model.Books; 11 | import com.microc.novel.basic.util.Pager; 12 | import com.microc.novel.web.service.BooksService; 13 | 14 | 15 | @Controller 16 | public class BooksController { 17 | 18 | @Autowired 19 | private BooksService booksService; 20 | 21 | @RequestMapping("/books") 22 | public String home() { 23 | return "books/list"; 24 | } 25 | 26 | @RequestMapping("/books/fragment") 27 | public String loadPager(Pager pager, String category, String name, ModelMap map) { 28 | booksService.find(pager, category, name); 29 | map.put("pager", pager); 30 | map.put("category", category); 31 | map.put("name", name); 32 | return "books/fragment"; 33 | } 34 | 35 | @RequestMapping("/books/detail") 36 | public String detail(String id, HttpServletRequest request, ModelMap map) { 37 | map.put("books", booksService.findById(id)); 38 | return "books/detail"; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/controller/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.controller; 2 | 3 | import javax.annotation.Resource; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.ui.ModelMap; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RequestMethod; 9 | import org.springframework.web.servlet.ModelAndView; 10 | 11 | import com.novel.cms.service.LoginService; 12 | 13 | @Controller 14 | public class LoginController { 15 | 16 | @Resource 17 | private LoginService service; 18 | 19 | /** 20 | * 登陆 21 | * @param novel 22 | * @return 23 | */ 24 | @RequestMapping(value = "/login", method ={RequestMethod.POST,RequestMethod.GET}) 25 | public ModelAndView login(ModelMap modelMap) throws Exception { 26 | return new ModelAndView("/login/login", modelMap); 27 | } 28 | 29 | /** 30 | * 小说列表 31 | * @param novel 32 | * @return 33 | */ 34 | @RequestMapping(value = "/confirmLogin", method ={RequestMethod.POST,RequestMethod.GET}) 35 | public ModelAndView novelList(ModelMap modelMap, String id, String password) throws Exception { 36 | boolean flag = service.login(id, password); 37 | if(flag){ 38 | return new ModelAndView("redirect:/novel"); 39 | }else{ 40 | return new ModelAndView("/login/login", modelMap); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /novel_cms/src/main/resource/beans/applicationContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | NON_NULL 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /novel_basic/src/main/resources/com/microc/novel/basic/mapper/ChapterMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | insert into t_chapter values(#{id}, #{name}, #{bookId}, #{position}, #{length}, #{index}); 6 | 7 | 8 | 9 | delete from t_chapter where id = #{id}; 10 | 11 | 12 | 13 | update t_chapter 14 | 15 | `name` = #{name}, 16 | `book_id` = #{bookId}, 17 | `position` = #{position}, 18 | `length` = #{length}, 19 | `index` = #{index} 20 | 21 | 22 | id = #{id} 23 | 24 | 25 | 26 | 29 | 30 | 40 | 41 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/beans/applicationContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | NON_NULL 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/controller/MyController.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.controller; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | 9 | import com.microc.novel.web.service.MyService; 10 | 11 | 12 | @Controller 13 | public class MyController { 14 | 15 | @Autowired 16 | private MyService myService; 17 | 18 | @RequestMapping("/my") 19 | public String my() { 20 | return "my/my"; 21 | } 22 | 23 | @RequestMapping("my/suggestion") 24 | public String suggestion() { 25 | return "my/suggestion"; 26 | } 27 | 28 | @RequestMapping("my/suggestionSubmit") 29 | public String suggestionSubmit(HttpServletRequest request, String contactWay, String suggestion) { 30 | //后期可添加获取更多信息 31 | 32 | myService.suggestionSubmit(contactWay, suggestion); 33 | System.err.println("sdsd"); 34 | return "my/my"; 35 | } 36 | 37 | @RequestMapping("my/callus") 38 | public String callus() { 39 | return "my/callus"; 40 | } 41 | 42 | @RequestMapping("my/aboutSoftWare") 43 | public String aboutSoftWare() { 44 | return "my/aboutSoftWare"; 45 | } 46 | 47 | @RequestMapping("my/relief") 48 | public String relief() { 49 | return "my/relief"; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /novel_web/src/main/resource/rest-servlet.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/classes/rest-servlet.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/html/users.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 我的书窝 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

个人中心

19 |
20 |
21 | 22 |
23 | 41 | 42 | -------------------------------------------------------------------------------- /novel_web/src/main/java/com/microc/novel/web/service/impl/ShelfServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.web.service.impl; 2 | 3 | import java.io.IOException; 4 | import java.net.URLDecoder; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | import javax.servlet.http.Cookie; 9 | import javax.servlet.http.HttpServletRequest; 10 | 11 | import org.codehaus.jackson.map.ObjectMapper; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.stereotype.Service; 14 | 15 | import com.microc.novel.basic.dao.BooksDao; 16 | import com.microc.novel.basic.model.Books; 17 | import com.microc.novel.web.service.ShelfService; 18 | 19 | @Service 20 | public class ShelfServiceImpl implements ShelfService { 21 | 22 | @Autowired 23 | private BooksDao booksDao; 24 | 25 | @Autowired 26 | private ObjectMapper objectMapper; 27 | 28 | @Override 29 | public List findShelfBooks(HttpServletRequest request) { 30 | List books = new ArrayList<>(); 31 | Cookie[] cookies = request.getCookies(); 32 | for (Cookie cookie : cookies) { 33 | if("books".equals(cookie.getName())) { 34 | try { 35 | String[] ids = objectMapper.readValue(URLDecoder.decode(cookie.getValue(), "UTF-8"), String[].class); 36 | if(ids != null) { 37 | for (String id : ids) { 38 | books.add(booksDao.findById(id)); 39 | } 40 | } 41 | } catch (IOException e) { 42 | e.printStackTrace(); 43 | } 44 | } 45 | } 46 | return books; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/regular/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 | 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | 30 |
31 | 32 |
33 |
34 |
35 | 36 |
37 | 38 |
39 |
40 |
-------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/my/relief.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | <%@ include file="../comm/head.jsp" %> 9 | 10 | 11 |
12 | 13 | 14 | 15 |

免责声明

16 |
17 |
18 |
19 |
20 |

Popover title

21 |
22 |
    23 |
  • Item1
  • 24 |
  • Item2
  • 25 |
  • Item3
  • 26 |
  • Item4
  • 27 |
  • Item5
  • 28 |
  • Item6
  • 29 |
  • Item7
  • 30 |
  • Item8
  • 31 |
32 |
33 |
34 | 35 |

36 | Tap title 37 | 38 |

39 |
40 |
41 |
42 |
43 | <%@ include file="../comm/foot.jsp" %> 44 | 45 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/util/Pager.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.util; 2 | 3 | import java.util.List; 4 | 5 | public class Pager { 6 | 7 | private int index = 1; 8 | private int rowCount = 30; 9 | private int pageCount; 10 | private int totalCount; 11 | private List result; 12 | 13 | public Pager(){ } 14 | 15 | public int getIndex() { 16 | return index; 17 | } 18 | 19 | public void setIndex(int index) { 20 | this.index = index; 21 | } 22 | 23 | public int getRowCount() { 24 | return rowCount; 25 | } 26 | 27 | public void setRowCount(int rowCount) { 28 | this.rowCount = rowCount; 29 | } 30 | 31 | public int getTotalCount() { 32 | return totalCount; 33 | } 34 | 35 | public void setTotalCount(int totalCount) { 36 | this.totalCount = totalCount; 37 | this.pageCount = this.totalCount % rowCount == 0 ? (this.totalCount / rowCount) : (this.totalCount / rowCount + 1); 38 | } 39 | 40 | public int getFirstPage() { 41 | return 1; 42 | } 43 | 44 | public int getLastPage() { 45 | return pageCount; 46 | } 47 | 48 | public int getPageCount() { 49 | return pageCount; 50 | } 51 | 52 | public List getResult() { 53 | return result; 54 | } 55 | 56 | public void setResult(List result) { 57 | this.result = result; 58 | } 59 | 60 | public int getPrevPage() { 61 | return this.index == 1 ? 1 : this.index - 1; 62 | } 63 | 64 | public int getNextPage() { 65 | return this.index > this.pageCount ? this.pageCount : this.index + 1; 66 | } 67 | 68 | public int getBeginRow() { 69 | return (index - 1) * rowCount; 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /novel_web/webapps/libs/ratchet/css/app.css: -------------------------------------------------------------------------------- 1 | @CHARSET "UTF-8"; 2 | 3 | * { 4 | font-family: 微软雅黑; 5 | } 6 | 7 | .bar-nav~.content { 8 | padding-top: 0; 9 | margin-top: 44px; 10 | margin-bottom: 50px; 11 | } 12 | 13 | .bar.bar-header-secondary~.content { 14 | padding-top: 0; 15 | margin-top: 88px; 16 | margin-bottom: 50px; 17 | } 18 | 19 | .content > .table-view-1 { 20 | margin-bottom: 0px; 21 | } 22 | 23 | .content > .table-view-1:first-child { 24 | margin-top: 0px; 25 | } 26 | 27 | .content>.table-view-1>.table-view-cell { 28 | padding: 11px 15px 11px 15px; 29 | } 30 | 31 | .content>.table-view { 32 | background-color: #f4f9fb; 33 | } 34 | 35 | .content>.table-view:first-child { 36 | margin: 0px; 37 | min-height: 100%; 38 | } 39 | 40 | .table-view dl { 41 | margin: 1%; 42 | width: 30%; 43 | display: inline-block; 44 | } 45 | 46 | .table-view dl img { 47 | width: 100%; 48 | -webkit-border-radius: 3px; 49 | -webkit-box-shadow: 2px 2px 4px #bbb; 50 | } 51 | 52 | .table-view>dl>dt { 53 | margin: 0px; 54 | } 55 | 56 | .table-view>dl>dd { 57 | margin: 0; 58 | font-size: 13px; 59 | color: #555; 60 | text-align: center; 61 | text-shadow: 0px 0px 4px #ccc; 62 | } 63 | 64 | .btn-sm { 65 | padding: 8px 0; 66 | margin-bottom: 0; 67 | font-size: 16px; 68 | } 69 | 70 | .title-left { 71 | position: absolute; 72 | display: block; 73 | width: 100%; 74 | padding: 0 0 0 15px; 75 | margin: 0 -10px; 76 | font-size: 17px; 77 | font-weight: 500; 78 | line-height: 44px; 79 | color: #000; 80 | text-align: left; 81 | white-space: nowrap; 82 | } 83 | 84 | .pd-5 { 85 | padding: 10px 5px; 86 | } 87 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/html/search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 我的书窝 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

搜索小说

19 |
20 |
21 |
22 | 23 |
24 |
25 |
26 | 27 |
28 | 46 | 47 | -------------------------------------------------------------------------------- /novel_cms/src/main/resource/rest-servlet.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/classes/rest-servlet.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/detail.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | #bg_detail { 7 | width: 100%; 8 | height: 100px; 9 | background-repeat: repeat; 10 | background-size: cover; 11 | -webkit-filter: blur(10px); 12 | position: absolute; 13 | } 14 | 15 | #detail { 16 | margin: 15px 10px; 17 | } 18 | 19 | #detail .head { 20 | color: #000; 21 | text-shadow: 0px 0px 5px white; 22 | } 23 | 24 | #detail .head .image { 25 | float: left; 26 | width: 30%; 27 | } 28 | 29 | #detail .head .image img { 30 | width: 100%; 31 | } 32 | 33 | #detail .head .detail { 34 | float: left; 35 | width: 70%; 36 | height: 100%; 37 | padding-left: 10px; 38 | overflow: auto; 39 | } 40 | 41 | #detail .head .detail span { 42 | font-family: "宋体"; 43 | } 44 | 45 | #detail .head .detail #booksName { 46 | font-size: 16px; 47 | font-weight: bold; 48 | line-height: 30px; 49 | } 50 | 51 | #detail .head .detail #categoryName { 52 | margin-left: 5px; 53 | font-size: 12px; 54 | color: white; 55 | text-shadow: 0px 0px 5px black; 56 | line-height: 20px; 57 | } 58 | 59 | #detail .head .detail #author { 60 | font-size: 14px; 61 | color: white; 62 | line-height: 20px; 63 | text-shadow: 0px 0px 5px black; 64 | } 65 | 66 | #detail .head .detail #word { 67 | font-size: 12px; 68 | color: white; 69 | line-height: 20px; 70 | text-shadow: 0px 0px 5px black; 71 | } 72 | 73 | #detail .head .detail #desc { 74 | font-size: 13px; 75 | color: #000; 76 | line-height: 20px; 77 | } 78 | 79 | .button-group { 80 | text-align: center; 81 | padding-top: 10px; 82 | } 83 | 84 | .button-group .btn-inline-block { 85 | display: inline-block; 86 | width: 28%; 87 | padding: 8px 0; 88 | margin: 0 5px; 89 | font-size: 15px; 90 | } 91 | 92 | 93 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/novel/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 |
4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 18 |
19 |
20 |
21 | 22 |
23 | 24 |
25 |
26 |
27 | 28 |
29 | 33 |
34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 | 43 |
44 | 45 |
46 |
47 |
-------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/html/store.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 我的书窝 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

书城

19 |
20 |
21 |
22 | 首页 23 | 分类 24 | 发现 25 | 书单 26 |
27 |
28 |
29 | 30 |
31 | 49 | 50 | -------------------------------------------------------------------------------- /novel_web/webapps/libs/ratchet/js/ratchet.pager.js: -------------------------------------------------------------------------------- 1 | /** 2 | * author: cuichuping 3 | */ 4 | window.addEventListener("load", function() { 5 | var viewList = document.querySelectorAll(".table-view-1"); 6 | for(var i = 0; i < viewList.length; i++) { 7 | var loadBtn = createLoadBtn(viewList[i]); 8 | viewList[i].appendChild(loadBtn); 9 | nextPager(loadBtn.options); 10 | } 11 | var loadBtnList = document.querySelectorAll(".loading"); 12 | for(var i = 0; i < loadBtnList.length; i++) { 13 | loadBtnList[i].onclick = function() { 14 | nextPager(this.parentNode.parentNode.options); 15 | } 16 | } 17 | }, false); 18 | 19 | function createLoadBtn(tableView) { 20 | var loadBtn = document.createElement("li"); 21 | loadBtn.className = "table-view-cell"; 22 | loadBtn.innerHTML = ""; 23 | loadBtn.options = { 24 | index: 0, 25 | loadBtn: loadBtn, 26 | continer: tableView, 27 | url: tableView.getAttribute("data-url"), 28 | count: parseInt(tableView.getAttribute("data-count")) 29 | }; 30 | return loadBtn; 31 | } 32 | 33 | function nextPager(options) { 34 | var xhr = new XMLHttpRequest(); 35 | xhr.open('GET', options.url + "?index="+(options.index++)+"&count="+options.count, true); 36 | xhr.onreadystatechange = function () { 37 | if (xhr.readyState === 4 && xhr.status === 200) { 38 | success(options, JSON.parse(xhr.responseText)); 39 | } 40 | }; 41 | xhr.send(null); 42 | } 43 | 44 | function success(options, data) { 45 | for(var i in data) { 46 | var newItem = document.createElement("li"); 47 | newItem.className = "table-view-cell"; 48 | newItem.innerHTML = data[i]; 49 | options.continer.insertBefore(newItem, options.loadBtn); 50 | } 51 | console.log(data) 52 | } 53 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | novel_web 4 | 5 | index.html 6 | index.htm 7 | index.jsp 8 | default.html 9 | default.htm 10 | default.jsp 11 | 12 | 13 | contextConfigLocation 14 | classpath*:/beans/* 15 | 16 | 17 | org.springframework.web.context.ContextLoaderListener 18 | 19 | 20 | DispatcherServlet 21 | org.springframework.web.servlet.DispatcherServlet 22 | 23 | contextConfigLocation 24 | classpath:rest-servlet.xml 25 | 26 | 1 27 | 28 | 29 | DispatcherServlet 30 | / 31 | 32 | 33 | CharacterEncodingFilter 34 | org.springframework.web.filter.CharacterEncodingFilter 35 | 36 | encoding 37 | UTF-8 38 | 39 | 40 | 41 | CharacterEncodingFilter 42 | DispatcherServlet 43 | 44 | -------------------------------------------------------------------------------- /novel_crawler/src/main/java/com/microc/novel/crawler/consts/Constants.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.crawler.consts; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | @SuppressWarnings("serial") 7 | public interface Constants { 8 | 9 | String DEFAULT_CHARSET = "GBK"; 10 | 11 | Map CATEGORY_URL = new HashMap(){{ 12 | put("玄幻小说", "http://www.lingdiankanshu.com/s_1/{pageNum}/"); 13 | put("修真小说", "http://www.lingdiankanshu.com/s_2/{pageNum}/"); 14 | put("都市小说", "http://www.lingdiankanshu.com/s_3/{pageNum}/"); 15 | put("穿越小说", "http://www.lingdiankanshu.com/s_4/{pageNum}/"); 16 | put("网游小说", "http://www.lingdiankanshu.com/s_5/{pageNum}/"); 17 | put("科幻小说", "http://www.lingdiankanshu.com/s_6/{pageNum}/"); 18 | put("其他小说", "http://www.lingdiankanshu.com/s_7/{pageNum}/"); 19 | }}; 20 | 21 | //***************************************** Books 相关信息 ************************************************* 22 | 23 | String BASE_URL = "http://www.lingdiankanshu.com"; 24 | 25 | String PAGE_CATEGORY_RGE = "\\s*?(.*?)\\s*?(.*?)\\s*?(.*?)\\s*?(.*?)\\s*?(.*?)\\s*?(.*?)\\s*?"; 26 | 27 | // 协议类型 $索引 [next匹配规则 $next索引] 28 | // none 29 | // this_page $1 30 | // other_page $1 regex $1 31 | 32 | String BOOK_NAME = "this_page $2"; 33 | 34 | String BOOK_AUTHOR = "this_page $5"; 35 | 36 | String WORD_COUNT = "this_page $6"; 37 | 38 | String BOOK_DESC = "other_page $1 ([\\w\\W]*?) $1"; 39 | 40 | String BOOK_IMAGE = "other_page $1 $1"; 41 | 42 | String LAST_PAGE_NUM = "class=\"last\">(\\d*?)"; 43 | 44 | } 45 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/books/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | <%@ include file="../comm/head.jsp" %> 10 | 11 | 12 |
13 | 14 | 15 | 16 |

书籍详情

17 | 18 | 19 | 20 |
21 |
22 |
23 |
24 |
25 |
26 | 27 |
28 |
29 |
30 |
31 | ${books.name} 32 | [${books.categoryId}] 33 |
34 |
35 | ${books.author} 36 | ${books.wordCount/10000}W 37 |
38 |
39 |
40 |

41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | 49 | 50 | 51 |
52 |
53 | <%@ include file="../comm/foot.jsp" %> 54 | 55 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/my/my.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | <%@ include file="../comm/head.jsp" %> 9 | 10 | 11 |
12 | 13 | 14 | 15 |

用户中心

16 | 17 | 18 | 19 |
20 |
21 |
22 | 23 |
24 | 27 |
28 | 48 | 56 |
57 |
58 | <%@ include file="../comm/foot.jsp" %> 59 | 60 | -------------------------------------------------------------------------------- /novel_cms/webapps/resources/css/login.css: -------------------------------------------------------------------------------- 1 | *{ 2 | margin:0; 3 | padding:0; 4 | } 5 | body{ 6 | font-family:"微软雅黑","Microsoft YaHei","Times New Roman",sans-serif,Serif; 7 | background-color: #02314d; 8 | } 9 | .header{ 10 | height:299px; 11 | background-color: #c3e9ff; 12 | border-bottom:1px solid #FFF; 13 | text-align: center; 14 | } 15 | .header .logo{ 16 | font-family:"Microsoft YaHei",sans-serif; 17 | font-size: 72px; 18 | background-color: inherit; 19 | color:#02314d; 20 | margin: 0 auto; 21 | padding-top:167px; 22 | } 23 | 24 | .login{ 25 | margin:0 auto; 26 | width:652px; 27 | height:333px; 28 | background-color: #02314d; 29 | } 30 | 31 | .login .left{ 32 | display:inline-block; 33 | width:12px; 34 | height:333px; 35 | background: url(../img/bg_l.png) no-repeat ; 36 | } 37 | .login .center{ 38 | position: relative; 39 | display:inline-block; 40 | width:628px; 41 | height:333px; 42 | background: url(../img/bg_c.png) repeat-x ; 43 | } 44 | .login .right{ 45 | display:inline-block; 46 | width:12px; 47 | height:333px; 48 | background: url(../img/bg_r.png) no-repeat ; 49 | } 50 | 51 | #loginForm { 52 | position: absolute; 53 | top:70px; 54 | left:50%; 55 | margin-left:-110px; 56 | font-size: 18px; 57 | font-family:"Microsoft YaHei",sans-serif; 58 | color:#666; 59 | } 60 | 61 | #loginForm input { 62 | width:220px; 63 | height: 45px; 64 | display: block; 65 | border:0; 66 | border-radius:5px; 67 | padding:0 15px; 68 | } 69 | 70 | #loginForm input[type=password] { 71 | margin-top:16px; 72 | } 73 | 74 | #loginForm input[type=submit] { 75 | margin-top:26px; 76 | padding:0; 77 | color:#FFF; 78 | background: url(../img/btn_submit.png) no-repeat ; 79 | } 80 | 81 | #msg { 82 | display: none; 83 | position: absolute; 84 | bottom:30px; 85 | left:50%; 86 | margin-left:-40px; 87 | font-size: 18px; 88 | font-family:"Microsoft YaHei",sans-serif; 89 | color:#ff5c69; 90 | } -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/my/callus.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | <%@ include file="../comm/head.jsp" %> 9 | 10 | 11 |
12 | 13 | 14 | 15 |

联系我们

16 |
17 |
18 |
19 | 联系方式 20 |
21 |
22 |
    23 |
  • 24 | 25 | 26 | 27 |
    28 | 123456789  (商务QQ) 29 |
    30 |
  • 31 |
  • 32 | 33 | 34 | 35 |
    36 | 远古学渣  (公众微信号) 37 |
    38 |
  • 39 |
  • 40 | 41 |         欢迎使用么么哒电子阅读器,如果您在使用的过程中遇到任何问题或者对产品有建议, 42 | 都可以通过微信公众号 [么么哒]联系我们,我们会在第一时间为您提供服务,如果觉 43 | 得软件不错,请在应用商店给予[么么哒]好评,您的鼓励是我们前进的最大动力! 44 | 45 |
    46 | 如何关注微信公众号? 47 |
    48 |
    49 | 1.主动搜索"么么哒"并关注 50 |
    51 | 52 |
    53 | 2.扫描下方2维码立即关注 54 |
    55 | 56 |
  • 57 |
58 |
59 |
60 | <%@ include file="../comm/foot.jsp" %> 61 | 62 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/novel/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 |
4 |
5 | 6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 34 |
35 |
36 | 37 |
38 | 39 |
40 | 41 |
42 |
43 |
44 | 45 |
46 | 47 |
48 |
49 |
-------------------------------------------------------------------------------- /novel_basic/src/main/resources/beans/spring-jdbc.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/db/DBBooks.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model.db; 2 | 3 | import java.util.Date; 4 | 5 | public class DBBooks { 6 | 7 | private String id; 8 | 9 | private String name; 10 | 11 | private String categoryId; 12 | 13 | private String author; 14 | 15 | private Long wordCount; 16 | 17 | private Date updateDate; 18 | 19 | private Integer status; 20 | 21 | private String filePath; 22 | 23 | private String imagePath; 24 | 25 | private String desc; 26 | 27 | public String getId() { 28 | return id; 29 | } 30 | 31 | public void setId(String id) { 32 | this.id = id; 33 | } 34 | 35 | public String getName() { 36 | return name; 37 | } 38 | 39 | public void setName(String name) { 40 | this.name = name; 41 | } 42 | 43 | public String getCategoryId() { 44 | return categoryId; 45 | } 46 | 47 | public void setCategoryId(String categoryId) { 48 | this.categoryId = categoryId; 49 | } 50 | 51 | public String getAuthor() { 52 | return author; 53 | } 54 | 55 | public void setAuthor(String author) { 56 | this.author = author; 57 | } 58 | 59 | public Long getWordCount() { 60 | return wordCount; 61 | } 62 | 63 | public void setWordCount(Long wordCount) { 64 | this.wordCount = wordCount; 65 | } 66 | 67 | public Date getUpdateDate() { 68 | return updateDate; 69 | } 70 | 71 | public void setUpdateDate(Date updateDate) { 72 | this.updateDate = updateDate; 73 | } 74 | 75 | public Integer getStatus() { 76 | return status; 77 | } 78 | 79 | public void setStatus(Integer status) { 80 | this.status = status; 81 | } 82 | 83 | public String getFilePath() { 84 | return filePath; 85 | } 86 | 87 | public void setFilePath(String filePath) { 88 | this.filePath = filePath; 89 | } 90 | 91 | public String getImagePath() { 92 | return imagePath; 93 | } 94 | 95 | public void setImagePath(String imagePath) { 96 | this.imagePath = imagePath; 97 | } 98 | 99 | public String getDesc() { 100 | return desc; 101 | } 102 | 103 | public void setDesc(String desc) { 104 | this.desc = desc; 105 | } 106 | 107 | } 108 | -------------------------------------------------------------------------------- /novel_web/webapps/resources/css/books.css: -------------------------------------------------------------------------------- 1 | @CHARSET "UTF-8"; 2 | 3 | * { 4 | font-family: 微软雅黑; 5 | padding: 0; 6 | margin: 0; 7 | } 8 | 9 | .bar-nav~.content { 10 | padding-top: 0; 11 | margin-top: 44px; 12 | margin-bottom: 50px; 13 | } 14 | 15 | .bar.bar-header-secondary~.content { 16 | padding-top: 0; 17 | margin-top: 88px; 18 | margin-bottom: 50px; 19 | } 20 | 21 | .content > .table-view-1 { 22 | margin-bottom: 0px; 23 | } 24 | 25 | .content > .table-view-1:first-child { 26 | margin-top: 0px; 27 | } 28 | 29 | .content>.table-view-1>.table-view-cell { 30 | padding: 11px 15px 11px 15px; 31 | } 32 | 33 | .content>.table-view { 34 | background-color: #f4f9fb; 35 | } 36 | 37 | .content>.table-view:first-child { 38 | margin: 0px; 39 | min-height: 100%; 40 | } 41 | 42 | .table-view dl { 43 | margin: 5px 2%; 44 | width: 28%; 45 | display: inline-block; 46 | } 47 | 48 | .table-view dl img { 49 | width: 100%; 50 | /* -webkit-border-radius: 3px; */ 51 | -webkit-box-shadow: 0px 0px 2px #bbb; 52 | } 53 | 54 | .table-view>dl>dt { 55 | margin: 0px; 56 | } 57 | 58 | .table-view>dl>dd { 59 | margin: 0; 60 | margin-bottom: 10px; 61 | font-size: 13px; 62 | color: #555; 63 | text-align: center; 64 | text-shadow: 0px 0px 4px #ccc; 65 | height: 20px; 66 | line-height: 20px; 67 | overflow: hidden; 68 | white-space: nowrap; 69 | } 70 | 71 | .btn-sm { 72 | padding: 8px 0; 73 | margin-bottom: 0; 74 | font-size: 16px; 75 | } 76 | 77 | .title-left { 78 | position: absolute; 79 | display: block; 80 | width: 100%; 81 | padding: 0 0 0 15px; 82 | margin: 0 -10px; 83 | font-size: 17px; 84 | font-weight: 500; 85 | line-height: 44px; 86 | color: #000; 87 | text-align: left; 88 | white-space: nowrap; 89 | } 90 | 91 | .pd-5 { 92 | padding: 10px 5px; 93 | } 94 | 95 | .deleteBooks { 96 | position:absolute; 97 | margin: -18px 0 0 -8px; 98 | padding: 3px 2px; 99 | background-color: white; 100 | font-size: 18px; 101 | display: inline-block; 102 | width: 23px; 103 | height: 23px; 104 | -webkit-border-radius: 23px; 105 | -webkit-box-shadow: 0px 0px 2px red; 106 | } 107 | 108 | .hide { 109 | display: none; 110 | } 111 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/dao/impl/CategoryDaompl.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.dao.impl; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import com.microc.novel.basic.dao.CategoryDao; 10 | import com.microc.novel.basic.mapper.CategoryMapper; 11 | import com.microc.novel.basic.model.Category; 12 | import com.microc.novel.basic.model.db.DBCategory; 13 | import com.microc.novel.basic.util.Generator; 14 | 15 | 16 | @Repository 17 | public class CategoryDaompl implements CategoryDao { 18 | 19 | @Autowired 20 | private CategoryMapper mapper; 21 | 22 | @Override 23 | public int insert(Category category) { 24 | category.setId((String) Generator.generate()); 25 | return mapper.insert(objectToDB(category)); 26 | } 27 | 28 | @Override 29 | public int delete(String id) { 30 | return mapper.delete(id); 31 | } 32 | 33 | @Override 34 | public int update(Category category) { 35 | return mapper.update(objectToDB(category)); 36 | } 37 | 38 | @Override 39 | public Category findById(String id) { 40 | return dbToObject(mapper.findById(id)); 41 | } 42 | 43 | @Override 44 | public Category findByName(String name) { 45 | return dbToObject(mapper.findByName(name)); 46 | } 47 | 48 | @Override 49 | public List list() { 50 | List dbList = mapper.list(); 51 | List list = new ArrayList(dbList.size()); 52 | for (DBCategory category : dbList) { 53 | list.add(dbToObject(category)); 54 | } 55 | return list; 56 | } 57 | 58 | private Category dbToObject(DBCategory dbCategory) { 59 | Category category = new Category(); 60 | category.setId(dbCategory.getId()); 61 | category.setName(dbCategory.getName()); 62 | category.setIndex(dbCategory.getIndex()); 63 | category.setUrl(dbCategory.getUrl()); 64 | return category; 65 | } 66 | 67 | private DBCategory objectToDB(Category category) { 68 | DBCategory dbCategory = new DBCategory(); 69 | dbCategory.setId(category.getId()); 70 | dbCategory.setName(category.getName()); 71 | dbCategory.setIndex(category.getIndex()); 72 | dbCategory.setUrl(category.getUrl()); 73 | return dbCategory; 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /novel_web/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | com.microc.novel.web 4 | novel_web 5 | 0.0.1-SNAPSHOT 6 | war 7 | 8 | ${basedir}/webapps/WEB-INF/classes 9 | 10 | 11 | maven-compiler-plugin 12 | 3.1 13 | 14 | 1.7 15 | 1.7 16 | 17 | 18 | 19 | maven-war-plugin 20 | 2.4 21 | 22 | webapps 23 | false 24 | 25 | 26 | 27 | 28 | 29 | 30 | com.microc.novel.basic 31 | novel_basic 32 | 0.0.1-SNAPSHOT 33 | 34 | 35 | org.springframework 36 | spring-web 37 | 3.1.1.RELEASE 38 | 39 | 40 | org.springframework 41 | spring-webmvc 42 | 3.1.1.RELEASE 43 | 44 | 45 | org.codehaus.jackson 46 | jackson-core-asl 47 | 1.9.13 48 | 49 | 50 | org.codehaus.jackson 51 | jackson-mapper-asl 52 | 1.9.13 53 | 54 | 55 | javax.servlet 56 | jstl 57 | 1.2 58 | runtime 59 | 60 | 61 | servletapi 62 | servlet-api 63 | 2.4-20040521 64 | 65 | 66 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/model/Books.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.model; 2 | 3 | import java.util.Date; 4 | 5 | public class Books { 6 | 7 | private String id; 8 | 9 | private String name; 10 | 11 | private String categoryId; 12 | 13 | private String author; 14 | 15 | private Long wordCount; 16 | 17 | private Date updateDate; 18 | 19 | private Integer status; 20 | 21 | private String imagePath; 22 | 23 | private String desc; 24 | 25 | public String getId() { 26 | return id; 27 | } 28 | 29 | public void setId(String id) { 30 | this.id = id; 31 | } 32 | 33 | public String getName() { 34 | return name; 35 | } 36 | 37 | public void setName(String name) { 38 | this.name = name; 39 | } 40 | 41 | public String getCategoryId() { 42 | return categoryId; 43 | } 44 | 45 | public void setCategoryId(String categoryId) { 46 | this.categoryId = categoryId; 47 | } 48 | 49 | public String getAuthor() { 50 | return author; 51 | } 52 | 53 | public void setAuthor(String author) { 54 | this.author = author; 55 | } 56 | 57 | public Long getWordCount() { 58 | return wordCount; 59 | } 60 | 61 | public void setWordCount(Long wordCount) { 62 | this.wordCount = wordCount; 63 | } 64 | 65 | public Date getUpdateDate() { 66 | return updateDate; 67 | } 68 | 69 | public void setUpdateDate(Date updateDate) { 70 | this.updateDate = updateDate; 71 | } 72 | 73 | public Integer getStatus() { 74 | return status; 75 | } 76 | 77 | public void setStatus(Integer status) { 78 | this.status = status; 79 | } 80 | 81 | public String getImagePath() { 82 | return imagePath; 83 | } 84 | 85 | public void setImagePath(String imagePath) { 86 | this.imagePath = imagePath; 87 | } 88 | 89 | public String getDesc() { 90 | return desc; 91 | } 92 | 93 | public void setDesc(String desc) { 94 | this.desc = desc; 95 | } 96 | 97 | @Override 98 | public String toString() { 99 | return "Books [id=" + id + ", name=" + name + ", categoryId=" + categoryId + ", author=" + author 100 | + ", wordCount=" + wordCount + ", updateDate=" + updateDate + ", status=" + status + ", imagePath=" 101 | + imagePath + ", desc=" + desc + "]"; 102 | } 103 | 104 | } 105 | -------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/service/impl/NovelServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.service.impl; 2 | 3 | /** 4 | * @author sun 5 | * */ 6 | import java.io.File; 7 | import java.io.IOException; 8 | import java.util.List; 9 | 10 | import javax.annotation.Resource; 11 | 12 | import org.apache.commons.io.FileUtils; 13 | import org.springframework.beans.factory.annotation.Value; 14 | import org.springframework.stereotype.Service; 15 | import org.springframework.web.multipart.MultipartFile; 16 | 17 | import com.microc.novel.basic.dao.BooksDao; 18 | import com.microc.novel.basic.model.Books; 19 | import com.microc.novel.basic.util.Generator; 20 | import com.novel.cms.service.NovelService; 21 | 22 | @Service 23 | public class NovelServiceImpl implements NovelService { 24 | 25 | private @Resource BooksDao dao; 26 | 27 | @Value("${books.image}") 28 | private String booksImage; 29 | 30 | /** 31 | * 查找小说 32 | * */ 33 | @Override 34 | public List findAll(String cateGoryId) { 35 | if(cateGoryId != null){ 36 | return dao.list(cateGoryId, null, null, null); 37 | }else{ 38 | return dao.list(null, null, null, null); 39 | } 40 | } 41 | 42 | /** 43 | * 添加小说 44 | * */ 45 | @Override 46 | public void add(Books books, MultipartFile file) { 47 | if(file != null){ 48 | try { 49 | String imagePath = booksImage + Generator.generate(); 50 | FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imagePath)); 51 | books.setImagePath(imagePath); 52 | } catch (IOException e) { 53 | e.printStackTrace(); 54 | } 55 | } 56 | dao.insert(books); 57 | } 58 | 59 | @Override 60 | public Books findById(String string) { 61 | return dao.findById(string); 62 | } 63 | 64 | /** 65 | * 修改小说 66 | * */ 67 | @Override 68 | public void update(Books books, MultipartFile file) { 69 | if(file != null){ 70 | try { 71 | String imagePath = booksImage + Generator.generate(); 72 | FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imagePath)); 73 | books.setImagePath(imagePath); 74 | } catch (IOException e) { 75 | e.printStackTrace(); 76 | } 77 | } 78 | dao.update(books); 79 | } 80 | 81 | /** 82 | * 删除小说 83 | * */ 84 | @Override 85 | public void delete(String[] marked) { 86 | for(String id : marked){ 87 | dao.delete(id); 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /novel_basic/src/main/resources/com/microc/novel/basic/mapper/BooksMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | id, name, category_id as categoryId, author, word_count as wordCount, update_date as updateDate, status, file_path as filePath, image_path as imagePath, `desc` 6 | 7 | 8 | 9 | insert into t_books values(#{id}, #{name}, #{categoryId}, #{author}, #{wordCount}, now(), #{status}, #{filePath}, #{imagePath}, #{desc}); 10 | 11 | 12 | 13 | delete from t_books where id = #{id}; 14 | 15 | 16 | 17 | update t_books set 18 | `name` = #{name}, 19 | `category_id` = #{categoryId}, 20 | `author` = #{author}, 21 | `word_count` = #{wordCount}, 22 | `update_date` = now(), 23 | `status` = #{status}, 24 | `file_path` = #{filePath}, 25 | `image_path` = #{imagePath}, 26 | `desc` = #{desc} 27 | where id = #{id} 28 | 29 | 30 | 33 | 34 | 48 | 49 | 60 | 61 | 62 | 63 | insert into t_suggestion 64 | values(#{id}, #{contactWay}, #{suggestion}, #{createTime}); 65 | 66 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/my/aboutSoftWare.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | <%@ include file="../comm/head.jsp" %> 8 | 9 | 10 |
11 | 12 | 13 | 14 |

关于软件

15 |
16 |
17 | 34 |
35 | 36 | 51 | <%@ include file="../comm/foot.jsp" %> 52 | 53 | -------------------------------------------------------------------------------- /novel_cms/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | com.microc.novel.cms 4 | novel_cms 5 | 0.0.1-SNAPSHOT 6 | war 7 | 8 | ${basedir}/webapps/WEB-INF/classes 9 | 10 | 11 | maven-compiler-plugin 12 | 3.1 13 | 14 | 1.7 15 | 1.7 16 | 17 | 18 | 19 | maven-war-plugin 20 | 2.4 21 | 22 | webapps 23 | false 24 | 25 | 26 | 27 | 28 | 29 | 30 | javax.servlet 31 | servlet-api 32 | 3.0-alpha-1 33 | 34 | 35 | jstl 36 | jstl 37 | 1.2 38 | 39 | 40 | com.microc.novel.basic 41 | novel_basic 42 | 0.0.1-SNAPSHOT 43 | 44 | 45 | org.springframework 46 | spring-webmvc 47 | 3.1.1.RELEASE 48 | 49 | 50 | org.codehaus.jackson 51 | jackson-core-asl 52 | 1.9.2 53 | 54 | 55 | commons-fileupload 56 | commons-fileupload 57 | 1.2.2 58 | 59 | 60 | org.codehaus.jackson 61 | jackson-mapper-asl 62 | 1.9.2 63 | 64 | 65 | commons-io 66 | commons-io 67 | 2.4 68 | 69 | 70 | -------------------------------------------------------------------------------- /novel_cms/webapps/libs/th2w.core.js: -------------------------------------------------------------------------------- 1 | var Core=(function(){var _array=function(iterable){if(!iterable){return[];}if("toArray" in Object(iterable)){return iterable.toArray()}var length=iterable.length||0,results=new Array(length);while(length--){results[length]=iterable[length]}return results};var _each=function(iterable,iterator){var array=_array(iterable);for(var i=0,length=array.length;i0){_doJs()}else{_doFn()}}script.onload=script.onreadystatechange=null}};var _cpool=[];var _excss=function(_css){if(!_cpool[_css]){_doCss(_path(_css)+".css");_cpool[_css]=true}};var _loadCss=function(){_each(arguments,_excss)};var _doCss=function(_href){var css=document.createElement("link");css.rel="stylesheet";css.type="text/css";css.href=_href;document.getElementsByTagName("head")[0].appendChild(css)};var _fqueue=new Array();var _exfn=function(_fn){if(_queue.length>0){_fqueue.push(_fn)}else{_fn()}};var _doFn=function(){while(_fqueue.length>0){_fqueue.shift()()}};var _loadFn=function(){_each(arguments,_exfn)};var _init=function(_obj){if(_obj.url){_url=_obj.url}if(_obj.css){_each(_obj.css,_excss)}if(_obj.js){_each(_obj.js,_exjs);_doJs()}if(_obj.fn){_each(_obj.fn,_exfn)}};return{"init":_init,"js":_loadJs,"css":_loadCss,"fn":_loadFn,"path":_path}})(); -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/datasource/SimpleDataSource.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.datasource; 2 | 3 | import java.io.PrintWriter; 4 | import java.sql.Connection; 5 | import java.sql.DriverManager; 6 | import java.sql.SQLException; 7 | import java.sql.SQLFeatureNotSupportedException; 8 | import java.util.logging.Logger; 9 | 10 | import javax.sql.DataSource; 11 | 12 | 13 | public class SimpleDataSource implements DataSource { 14 | 15 | private String driverClassName; 16 | private String jdbcURL; 17 | private String userName; 18 | private String password; 19 | 20 | public void setDriverClassName(String driverClassName) throws ClassNotFoundException, InstantiationException, IllegalAccessException { 21 | this.driverClassName = driverClassName; 22 | Class.forName(this.driverClassName, true, Thread.currentThread().getContextClassLoader()); 23 | } 24 | 25 | public void setJdbcURL(String jdbcURL) { 26 | this.jdbcURL = jdbcURL; 27 | } 28 | 29 | public void setUserName(String userName) { 30 | this.userName = userName; 31 | } 32 | 33 | public void setPassword(String password) { 34 | this.password = password; 35 | } 36 | 37 | /** 38 | * Returns a Connection using the DriverManager and all set properties. 39 | */ 40 | public Connection getConnection() throws SQLException { 41 | Connection conn = null; 42 | if (userName != null) { 43 | conn = DriverManager.getConnection(jdbcURL, userName, password); 44 | } else { 45 | conn = DriverManager.getConnection(jdbcURL); 46 | } 47 | return conn; 48 | } 49 | 50 | @Override 51 | public PrintWriter getLogWriter() throws SQLException { 52 | return null; 53 | } 54 | 55 | @Override 56 | public void setLogWriter(PrintWriter out) throws SQLException { 57 | 58 | } 59 | 60 | @Override 61 | public void setLoginTimeout(int seconds) throws SQLException { 62 | 63 | } 64 | 65 | @Override 66 | public int getLoginTimeout() throws SQLException { 67 | return 0; 68 | } 69 | 70 | @Override 71 | public Logger getParentLogger() throws SQLFeatureNotSupportedException { 72 | return null; 73 | } 74 | 75 | @Override 76 | public T unwrap(Class iface) throws SQLException { 77 | return null; 78 | } 79 | 80 | @Override 81 | public boolean isWrapperFor(Class iface) throws SQLException { 82 | return false; 83 | } 84 | 85 | @Override 86 | public Connection getConnection(String username, String password) throws SQLException { 87 | return null; 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /novel_web/webapps/WEB-INF/jsp/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 我的书窝 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |

我的书架

20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 |
28 |
大主宰
29 |
30 |
31 |
32 | 33 |
34 |
琅琊榜
35 |
36 |
37 |
38 | 39 |
40 |
完美世界
41 |
42 |
43 |
44 | 45 |
46 |
校花的贴身侍卫
47 |
48 |
49 |
50 | 51 |
52 |
大主宰
53 |
54 |
55 |
56 | 57 |
58 |
琅琊榜
59 |
60 |
61 |
62 | 63 |
64 |
完美世界
65 |
66 |
67 |
68 | 86 | 87 | -------------------------------------------------------------------------------- /novel_basic/src/main/java/com/microc/novel/basic/util/Generator.java: -------------------------------------------------------------------------------- 1 | package com.microc.novel.basic.util; 2 | 3 | import java.io.Serializable; 4 | import java.net.InetAddress; 5 | 6 | public class Generator { 7 | 8 | private static final int IP; 9 | 10 | static { 11 | int ipadd; 12 | try { 13 | ipadd = toInt(InetAddress.getLocalHost().getAddress()); 14 | } catch (Exception e) { 15 | ipadd = 0; 16 | } 17 | IP = ipadd; 18 | } 19 | 20 | private static final int JVM = (int) (System.currentTimeMillis() >>> 8); 21 | 22 | private static Short counter = (short)0; 23 | 24 | public static Serializable generate(char c) { 25 | 26 | return new StringBuffer(36) 27 | .append(format(getIP())).append(c) 28 | .append(format(getJVM())).append(c) 29 | .append(format(getHiTime())).append(c) 30 | .append(format(getLoTime())).append(c) 31 | .append(format(getCount())).toString(); 32 | } 33 | 34 | public static Serializable generate() { 35 | 36 | return new StringBuffer(32).append(format(getIP())).append(format(getJVM())) 37 | 38 | .append(format(getHiTime())).append(format(getLoTime())) 39 | 40 | .append(format(getCount())).toString(); 41 | } 42 | 43 | protected synchronized static short getCount() { 44 | 45 | synchronized (counter) { 46 | 47 | if (counter >= Short.MAX_VALUE) counter = (short)0; 48 | 49 | return counter++; 50 | } 51 | } 52 | 53 | protected static int getJVM() { 54 | return JVM; 55 | } 56 | 57 | protected static int getIP() { 58 | return IP; 59 | } 60 | 61 | private static short getHiTime() { 62 | return (short) (System.currentTimeMillis() >>> 32); 63 | } 64 | 65 | private static int getLoTime() { 66 | return (int) System.currentTimeMillis(); 67 | } 68 | 69 | private static String format(int intValue) { 70 | String formatted = Integer.toHexString(intValue); 71 | StringBuffer buf = new StringBuffer("00000000"); 72 | buf.replace(8 - formatted.length(), 8, formatted); 73 | return buf.toString(); 74 | } 75 | 76 | private static String format(short shortValue) { 77 | String formatted = Integer.toHexString(shortValue); 78 | System.out.println("formatted = " + formatted); 79 | StringBuffer buf = new StringBuffer("0000"); 80 | buf.replace(4 - formatted.length(), 4, formatted); 81 | return buf.toString(); 82 | } 83 | 84 | private static int toInt(byte[] bytes) { 85 | int result = 0; 86 | for (int i = 0; i < 4; i++) { 87 | result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i]; 88 | } 89 | return result; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/top.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=UTF-8" language="java"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 |
4 |
5 | 6 |
7 | 欢迎您: 8 |
9 |
10 | 14 | 17 |
18 |
19 |
20 |
21 |
22 | 23 | 31 |
32 |
33 |
34 | 35 |
36 |
37 | 42 | 51 |
52 |
53 |
54 |
55 |
56 |
-------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | novel_basic 7 | 8 | index.html 9 | index.htm 10 | index.jsp 11 | default.html 12 | default.htm 13 | default.jsp 14 | 15 | 16 | contextConfigLocation 17 | classpath*:beans/**.xml 18 | 19 | 20 | org.springframework.web.context.ContextLoaderListener 21 | 22 | 23 | DispatcherServlet 24 | org.springframework.web.servlet.DispatcherServlet 25 | 26 | contextConfigLocation 27 | classpath:rest-servlet.xml 28 | 29 | 2 30 | 31 | 32 | DispatcherServlet 33 | / 34 | 35 | 36 | CharacterEncodingFilter 37 | org.springframework.web.filter.CharacterEncodingFilter 38 | 39 | encoding 40 | UTF-8 41 | 42 | 43 | 44 | HiddenHttpMethodFilter 45 | org.springframework.web.filter.HiddenHttpMethodFilter 46 | 47 | 48 | MultipartFilter 49 | org.springframework.web.multipart.support.MultipartFilter 50 | 51 | multipartResolverBeanName 52 | multipartResolver 53 | 54 | 55 | 56 | 57 | CharacterEncodingFilter 58 | DispatcherServlet 59 | 60 | 61 | HiddenHttpMethodFilter 62 | DispatcherServlet 63 | 64 | 65 | 66 | 403 67 | /error/403.jsp 68 | 69 | -------------------------------------------------------------------------------- /novel_cms/webapps/WEB-INF/jsp/leftmenu.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 |
3 |
4 |
5 | 13 | 20 |
21 |
22 | 30 | 37 |
38 |
39 | 47 | 54 |
55 |
56 | 59 |
-------------------------------------------------------------------------------- /novel_cms/src/main/java/com/novel/cms/controller/ChapterController.java: -------------------------------------------------------------------------------- 1 | package com.novel.cms.controller; 2 | 3 | import java.util.List; 4 | 5 | import javax.annotation.Resource; 6 | import javax.servlet.http.HttpSession; 7 | 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.ui.ModelMap; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.ResponseBody; 13 | import org.springframework.web.servlet.ModelAndView; 14 | 15 | import com.microc.novel.basic.model.Chapter; 16 | import com.novel.cms.service.ChapterService; 17 | 18 | @Controller 19 | public class ChapterController { 20 | 21 | @Resource 22 | private ChapterService service; 23 | 24 | /** 25 | * 章节列表 26 | * @param chapter 27 | * @return 28 | */ 29 | @RequestMapping(value = "/chapter", method ={RequestMethod.POST,RequestMethod.GET}) 30 | public ModelAndView findCategory(ModelMap modelMap, String bookId, HttpSession session) throws Exception { 31 | List chapters = service.findAll(bookId); 32 | modelMap.addAttribute("chapters", chapters); 33 | session.setAttribute("bookId", bookId); 34 | return new ModelAndView("/chapter/chapter", modelMap); 35 | } 36 | 37 | /** 38 | * put 39 | * @param chapter 40 | * @return 41 | */ 42 | @RequestMapping(value = "/chapter", method ={RequestMethod.PUT}) 43 | public ModelAndView put(ModelMap modelMap, String[] marked) throws Exception { 44 | if(marked!=null && marked.length>0){ 45 | modelMap.put("chapter", service.findById(marked[0])); 46 | //edit 47 | return new ModelAndView("/chapter/edit", modelMap); 48 | } 49 | // add 50 | return new ModelAndView("/chapter/add", modelMap); 51 | } 52 | 53 | /** 54 | * 添加 55 | * @param chapter 56 | * @return 57 | */ 58 | @RequestMapping(value = "/chapter/add", method ={RequestMethod.POST}) 59 | public @ResponseBody boolean add(Chapter chapter) throws Exception { 60 | try { 61 | service.add(chapter); 62 | return true; 63 | } catch (Exception e) {e.printStackTrace(); 64 | return false; 65 | } 66 | } 67 | 68 | /** 69 | * 编辑 70 | * @param chapter 71 | * @return 72 | */ 73 | @RequestMapping(value = "/chapter/edit", method ={RequestMethod.POST}) 74 | public @ResponseBody boolean edit(Chapter chapter) throws Exception { 75 | try { 76 | service.update(chapter); 77 | return true; 78 | } catch (Exception e) { 79 | return false; 80 | } 81 | } 82 | 83 | /** 84 | * 删除 85 | * @param chapter 86 | * @return 87 | */ 88 | @RequestMapping(value = "/chapter", method ={RequestMethod.DELETE}) 89 | public @ResponseBody boolean delete(String[] marked) throws Exception { 90 | try { 91 | service.delete(marked); 92 | return true; 93 | } catch (Exception e) { 94 | return false; 95 | } 96 | } 97 | } 98 | --------------------------------------------------------------------------------