• SpringBoot+Vue项目漫画网站


    文末获取源码

    开发语言:Java

    框架:springboot

    JDK版本:JDK1.8

    服务器:tomcat7

    数据库:mysql 5.7/8.0

    数据库工具:Navicat11

    开发软件:eclipse/myeclipse/idea

    Maven包:Maven3.3.9

    浏览器:谷歌浏览器

    前言介绍 

    本系统主要包括管理员和用户两个角色组成,主要包括以下功能:

    (1)前台:首页、漫画资源、排行榜、交流论坛、公告信息、个人中心、后台管理 。

    (2)管理员:首页、个人中心、用户管理、漫画分类管理、漫画资源管理、分类管理、排行榜管理、交流论坛、系统管理。

    (3)用户:首页、个人中心、漫画资源管理。

    功能分析

    考虑到实际生活中在漫画网站方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。

    (a) 管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、漫画分类管理、漫画投稿管理、分类管理、排行榜管理、交流论坛、系统管理等功能。管理员用例图如图 

     (b)用户;用户使用本系统涉到的功能主要有:首页、个人中心、,漫画投稿管理等功能。用户用例图如图

    网站整体功能

     

    系统功能模块 

    漫画网站,在系统首页可以查看首页、漫画投稿、排行榜、交流论坛、公告信息、个人中心、后台管理等内容,并进行详细操作,如图

     

    用户注册

    在用户注册页面通过填写用户账号、密码、确认密码、用户姓名、联系方式等信息进行注册操作,如图 

    漫画资源

    在漫画资源页面可以查看漫画名称、投稿编号、漫画分类、漫画标签、投稿日期、用户账号、用户姓名、点击次数等内容,还可以根据投稿稿件点击下载,对我的收藏进行详细操作如图

     

    个人中心

    在个人中心页面通过填写用户账号、密码、用户姓名、性别、联系方式、上传图片等内容进行更新信息,还可以根据需要对我的收藏或我的发布进行详细操作,如图

     

    管理员功能模块 

    管理员进行登录,进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图 

    管理员登录系统后,可以对首页、个人中心、用户管理、漫画分类管理、漫画投稿管理、分类管理、排行榜管理、交流论坛、系统管理等进行相应的操作管理,如图

     

    用户管理,在用户管理页面可以对索引、用户账号、用户姓名、性别、联系方式、头像等内容进行详情,修改和删除等操作,如图

    漫画分类管理

    在漫画分类管理页面可以对索引、漫画分类、漫画标签等内容进行详情,修改和删除等操作,如图

    漫画投稿管理

    在漫画投稿管理页面可以对索引、投稿编号、漫画名称、漫画分类、漫画标签、漫画图片、投稿稿件、投稿日期、用户账号、用户姓名、审核回复、审核状态、审核等内容进行详情,修改,查看评论和删除等操作,如图

    分类管理

    在分类管理页面可以对索引、分类等内容进行详情,修改和删除等操作,如图 

    排行榜管理

    在排行榜管理页面可以对索引、标题、漫画名称、漫画分类、漫画标签、分类、排行、封面、更新时间等内容进行详情,修改和删除等操作,如图

    交流论坛

    在交流论坛页面可以对索引、帖子标题、用户名、状态等内容进行详情,修改,查看评论和删除等操作,如图

    系统管理

    在公告信息页面可以对索引、标题、图片等内容进行详情,修改和删除等操作,还可对轮播图管理进行详细操作,如图

     

    用户功能模块

    用户登录进入漫画网站可以对首页、个人中心、漫画投稿管理等进行相应操作,如图

    个人中心

    在个人信息页面通过填写用户账号、用户姓名、性别、头像等内容对个人信息进行修改操作,如图 

     

    漫画投稿管理

    在漫画投稿管理页面可以对索引、投稿编号、漫画名称、漫画分类、漫画标签、漫画图片、投稿稿件、投稿日期、用户账号、用户姓名、审核回复、审核状态等内容进行查看评论、详情修改和删除等操作,如图 

    部分核心代码 

    1. /**
    2. * 登录相关
    3. */
    4. @RequestMapping("config")
    5. @RestController
    6. public class ConfigController{
    7. @Autowired
    8. private ConfigService configService;
    9. /**
    10. * 列表
    11. */
    12. @RequestMapping("/page")
    13. public R page(@RequestParam Map<String, Object> params,ConfigEntity config){
    14. EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
    15. PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
    16. return R.ok().put("data", page);
    17. }
    18. /**
    19. * 列表
    20. */
    21. @IgnoreAuth
    22. @RequestMapping("/list")
    23. public R list(@RequestParam Map<String, Object> params,ConfigEntity config){
    24. EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
    25. PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
    26. return R.ok().put("data", page);
    27. }
    28. /**
    29. * 信息
    30. */
    31. @RequestMapping("/info/{id}")
    32. public R info(@PathVariable("id") String id){
    33. ConfigEntity config = configService.selectById(id);
    34. return R.ok().put("data", config);
    35. }
    36. /**
    37. * 详情
    38. */
    39. @IgnoreAuth
    40. @RequestMapping("/detail/{id}")
    41. public R detail(@PathVariable("id") String id){
    42. ConfigEntity config = configService.selectById(id);
    43. return R.ok().put("data", config);
    44. }
    45. /**
    46. * 根据name获取信息
    47. */
    48. @RequestMapping("/info")
    49. public R infoByName(@RequestParam String name){
    50. ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
    51. return R.ok().put("data", config);
    52. }
    53. /**
    54. * 保存
    55. */
    56. @PostMapping("/save")
    57. public R save(@RequestBody ConfigEntity config){
    58. // ValidatorUtils.validateEntity(config);
    59. configService.insert(config);
    60. return R.ok();
    61. }
    62. /**
    63. * 修改
    64. */
    65. @RequestMapping("/update")
    66. public R update(@RequestBody ConfigEntity config){
    67. // ValidatorUtils.validateEntity(config);
    68. configService.updateById(config);//全部更新
    69. return R.ok();
    70. }
    71. /**
    72. * 删除
    73. */
    74. @RequestMapping("/delete")
    75. public R delete(@RequestBody Long[] ids){
    76. configService.deleteBatchIds(Arrays.asList(ids));
    77. return R.ok();
    78. }
    79. }
    1. /**
    2. * 漫画资源
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2022-04-01 17:16:21
    7. */
    8. @RestController
    9. @RequestMapping("/manhuaziyuan")
    10. public class ManhuaziyuanController {
    11. @Autowired
    12. private ManhuaziyuanService manhuaziyuanService;
    13. @Autowired
    14. private StoreupService storeupService;
    15. /**
    16. * 后端列表
    17. */
    18. @RequestMapping("/page")
    19. public R page(@RequestParam Map<String, Object> params,ManhuaziyuanEntity manhuaziyuan,
    20. HttpServletRequest request){
    21. String tableName = request.getSession().getAttribute("tableName").toString();
    22. if(tableName.equals("yonghu")) {
    23. manhuaziyuan.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
    24. }
    25. EntityWrapper<ManhuaziyuanEntity> ew = new EntityWrapper<ManhuaziyuanEntity>();
    26. PageUtils page = manhuaziyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, manhuaziyuan), params), params));
    27. return R.ok().put("data", page);
    28. }
    29. /**
    30. * 前端列表
    31. */
    32. @IgnoreAuth
    33. @RequestMapping("/list")
    34. public R list(@RequestParam Map<String, Object> params,ManhuaziyuanEntity manhuaziyuan,
    35. HttpServletRequest request){
    36. EntityWrapper<ManhuaziyuanEntity> ew = new EntityWrapper<ManhuaziyuanEntity>();
    37. PageUtils page = manhuaziyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, manhuaziyuan), params), params));
    38. return R.ok().put("data", page);
    39. }
    40. /**
    41. * 列表
    42. */
    43. @RequestMapping("/lists")
    44. public R list( ManhuaziyuanEntity manhuaziyuan){
    45. EntityWrapper<ManhuaziyuanEntity> ew = new EntityWrapper<ManhuaziyuanEntity>();
    46. ew.allEq(MPUtil.allEQMapPre( manhuaziyuan, "manhuaziyuan"));
    47. return R.ok().put("data", manhuaziyuanService.selectListView(ew));
    48. }
    49. /**
    50. * 查询
    51. */
    52. @RequestMapping("/query")
    53. public R query(ManhuaziyuanEntity manhuaziyuan){
    54. EntityWrapper< ManhuaziyuanEntity> ew = new EntityWrapper< ManhuaziyuanEntity>();
    55. ew.allEq(MPUtil.allEQMapPre( manhuaziyuan, "manhuaziyuan"));
    56. ManhuaziyuanView manhuaziyuanView = manhuaziyuanService.selectView(ew);
    57. return R.ok("查询漫画资源成功").put("data", manhuaziyuanView);
    58. }
    59. /**
    60. * 后端详情
    61. */
    62. @RequestMapping("/info/{id}")
    63. public R info(@PathVariable("id") Long id){
    64. ManhuaziyuanEntity manhuaziyuan = manhuaziyuanService.selectById(id);
    65. manhuaziyuan.setClicknum(manhuaziyuan.getClicknum()+1);
    66. manhuaziyuan.setClicktime(new Date());
    67. manhuaziyuanService.updateById(manhuaziyuan);
    68. return R.ok().put("data", manhuaziyuan);
    69. }
    70. /**
    71. * 前端详情
    72. */
    73. @IgnoreAuth
    74. @RequestMapping("/detail/{id}")
    75. public R detail(@PathVariable("id") Long id){
    76. ManhuaziyuanEntity manhuaziyuan = manhuaziyuanService.selectById(id);
    77. manhuaziyuan.setClicknum(manhuaziyuan.getClicknum()+1);
    78. manhuaziyuan.setClicktime(new Date());
    79. manhuaziyuanService.updateById(manhuaziyuan);
    80. return R.ok().put("data", manhuaziyuan);
    81. }
    82. /**
    83. * 赞或踩
    84. */
    85. @RequestMapping("/thumbsup/{id}")
    86. public R vote(@PathVariable("id") String id,String type){
    87. ManhuaziyuanEntity manhuaziyuan = manhuaziyuanService.selectById(id);
    88. if(type.equals("1")) {
    89. manhuaziyuan.setThumbsupnum(manhuaziyuan.getThumbsupnum()+1);
    90. } else {
    91. manhuaziyuan.setCrazilynum(manhuaziyuan.getCrazilynum()+1);
    92. }
    93. manhuaziyuanService.updateById(manhuaziyuan);
    94. return R.ok("投票成功");
    95. }
    96. /**
    97. * 后端保存
    98. */
    99. @RequestMapping("/save")
    100. public R save(@RequestBody ManhuaziyuanEntity manhuaziyuan, HttpServletRequest request){
    101. manhuaziyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    102. //ValidatorUtils.validateEntity(manhuaziyuan);
    103. manhuaziyuanService.insert(manhuaziyuan);
    104. return R.ok();
    105. }
    106. /**
    107. * 前端保存
    108. */
    109. @RequestMapping("/add")
    110. public R add(@RequestBody ManhuaziyuanEntity manhuaziyuan, HttpServletRequest request){
    111. manhuaziyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    112. //ValidatorUtils.validateEntity(manhuaziyuan);
    113. manhuaziyuanService.insert(manhuaziyuan);
    114. return R.ok();
    115. }
    116. /**
    117. * 修改
    118. */
    119. @RequestMapping("/update")
    120. public R update(@RequestBody ManhuaziyuanEntity manhuaziyuan, HttpServletRequest request){
    121. //ValidatorUtils.validateEntity(manhuaziyuan);
    122. manhuaziyuanService.updateById(manhuaziyuan);//全部更新
    123. return R.ok();
    124. }
    125. /**
    126. * 删除
    127. */
    128. @RequestMapping("/delete")
    129. public R delete(@RequestBody Long[] ids){
    130. manhuaziyuanService.deleteBatchIds(Arrays.asList(ids));
    131. return R.ok();
    132. }
    133. /**
    134. * 提醒接口
    135. */
    136. @RequestMapping("/remind/{columnName}/{type}")
    137. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    138. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    139. map.put("column", columnName);
    140. map.put("type", type);
    141. if(type.equals("2")) {
    142. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    143. Calendar c = Calendar.getInstance();
    144. Date remindStartDate = null;
    145. Date remindEndDate = null;
    146. if(map.get("remindstart")!=null) {
    147. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    148. c.setTime(new Date());
    149. c.add(Calendar.DAY_OF_MONTH,remindStart);
    150. remindStartDate = c.getTime();
    151. map.put("remindstart", sdf.format(remindStartDate));
    152. }
    153. if(map.get("remindend")!=null) {
    154. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    155. c.setTime(new Date());
    156. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    157. remindEndDate = c.getTime();
    158. map.put("remindend", sdf.format(remindEndDate));
    159. }
    160. }
    161. Wrapper<ManhuaziyuanEntity> wrapper = new EntityWrapper<ManhuaziyuanEntity>();
    162. if(map.get("remindstart")!=null) {
    163. wrapper.ge(columnName, map.get("remindstart"));
    164. }
    165. if(map.get("remindend")!=null) {
    166. wrapper.le(columnName, map.get("remindend"));
    167. }
    168. String tableName = request.getSession().getAttribute("tableName").toString();
    169. if(tableName.equals("yonghu")) {
    170. wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    171. }
    172. int count = manhuaziyuanService.selectCount(wrapper);
    173. return R.ok().put("count", count);
    174. }
    175. /**
    176. * 前端智能排序
    177. */
    178. @IgnoreAuth
    179. @RequestMapping("/autoSort")
    180. public R autoSort(@RequestParam Map<String, Object> params,ManhuaziyuanEntity manhuaziyuan, HttpServletRequest request,String pre){
    181. EntityWrapper<ManhuaziyuanEntity> ew = new EntityWrapper<ManhuaziyuanEntity>();
    182. Map<String, Object> newMap = new HashMap<String, Object>();
    183. Map<String, Object> param = new HashMap<String, Object>();
    184. Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
    185. while (it.hasNext()) {
    186. Map.Entry<String, Object> entry = it.next();
    187. String key = entry.getKey();
    188. String newKey = entry.getKey();
    189. if (pre.endsWith(".")) {
    190. newMap.put(pre + newKey, entry.getValue());
    191. } else if (StringUtils.isEmpty(pre)) {
    192. newMap.put(newKey, entry.getValue());
    193. } else {
    194. newMap.put(pre + "." + newKey, entry.getValue());
    195. }
    196. }
    197. params.put("sort", "clicknum");
    198. params.put("order", "desc");
    199. PageUtils page = manhuaziyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, manhuaziyuan), params), params));
    200. return R.ok().put("data", page);
    201. }
    202. }

  • 相关阅读:
    Redis笔记进阶篇:万字长文-整理Redis,各种知识点,建议收藏
    GaN HEMTs在电力电子应用中的交叉耦合与基板电容分析与建模
    四川竹哲电子商务有限公司为创业者保驾护航
    《向量数据库指南》——用 Milvus Cloud和 NVIDIA Merlin 搭建高效推荐系统结果
    No144.精选前端面试题,享受每天的挑战和学习
    如何使用 KubeSeal 高效加密和管理 Kubernetes 集群的 Secret
    高校毕业求职难?“百日千万”网络招聘活动解决你的难题
    初级软件测试面试会问什么?企业常问的这些面试真题值得一记
    scrapy-redis空跑如何中止,队列为空时自动关闭scraper
    Node.js 正在逐渐被淘汰!Bun 1.0 正在改变 JavaScript 的游戏规则
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/126075881