• 网址导航栏的设计


    效果图

    代码

    前台导航样式设计

    1. <template>
    2. <div class="container">
    3. <div class="website-container" v-for="(type,typeIndex) in typeList.list" :key="typeIndex">
    4. <!-- 导航分类 start-->
    5. <div class="website-title">
    6. <el-button round type="primary" size="large">{{ type.websiteTypeName }}</el-button>
    7. </div>
    8. <!-- 导航分类 end-->
    9. <!-- 网站 start-->
    10. <a v-for="(website,websiteIndex) in type.websites"
    11. :key="websiteIndex"
    12. :href="website.websiteUrl"
    13. target="_blank"
    14. :title="website.websiteName">
    15. <van-image class="websiteImg" round fit="cover" :src="website.websiteImg"></van-image>
    16. </a>
    17. <!-- 网站 start-->
    18. </div>
    19. </div>
    20. </template>
    21. <script setup>
    22. import {onMounted, reactive} from "vue";
    23. import axios from "../../api/index.js"
    24. const typeList = reactive({
    25. list: []
    26. })
    27. onMounted(() => {
    28. axios.website_findAllTypes().then(res => {
    29. if (res.data.code == 200) {
    30. typeList.list = res.data.data
    31. }
    32. })
    33. })
    34. </script>
    35. <style scoped>
    36. .container {
    37. padding-top: 160px;
    38. background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0, #3f95ea), color-stop(1, #52d3aa));
    39. background-image: -webkit-repeating-linear-gradient(top left, #3f95ea 0%, #52d3aa 100%);
    40. background-image: repeating-linear-gradient(to bottom right, #3f95ea 0%, #52d3aa 100%);
    41. background-image: -ms-repeating-linear-gradient(top left, #3f95ea 0%, #52d3aa 100%);
    42. }
    43. .website-container {
    44. margin-left: 250px;
    45. }
    46. .website-title {
    47. font-weight: 700;
    48. font-size:30px;
    49. font-family:'楷体';
    50. margin-top: 30px;
    51. }
    52. .websiteImg {
    53. margin: 20px;
    54. width: 150px;
    55. height: 50px;
    56. }
    57. </style>

    后台接口编写

    数据库设计

    1. DROP TABLE IF EXISTS `website_type`;
    2. CREATE TABLE `website_type` (
    3. `websiteTypeId` int(11) NOT NULL AUTO_INCREMENT,
    4. `websiteTypeName` varchar(255) DEFAULT NULL,
    5. PRIMARY KEY (`websiteTypeId`)
    6. ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4;
    1. DROP TABLE IF EXISTS `website`;
    2. CREATE TABLE `website` (
    3. `websiteId` int(11) NOT NULL AUTO_INCREMENT,
    4. `websiteImg` longtext,
    5. `websiteName` varchar(255) DEFAULT NULL,
    6. `websiteUrl` longtext,
    7. `websiteDesc` varchar(255) DEFAULT NULL,
    8. `websiteTypeId` int(11) DEFAULT NULL,
    9. PRIMARY KEY (`websiteId`)
    10. ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4;

     

    实体类设计

    1. package jkw.pojo;
    2. import com.baomidou.mybatisplus.annotation.TableField;
    3. import com.baomidou.mybatisplus.annotation.TableId;
    4. import lombok.Data;
    5. import java.io.Serializable;
    6. import java.util.List;
    7. /**
    8. * 网站类型
    9. */
    10. @Data
    11. public class WebsiteType implements Serializable {
    12. @TableId
    13. private Integer websiteTypeId;
    14. private String websiteTypeName;//类型名
    15. @TableField(exist = false)
    16. private List websites;
    17. }
    1. package jkw.pojo;
    2. import com.baomidou.mybatisplus.annotation.TableId;
    3. import lombok.Data;
    4. import java.io.Serializable;
    5. /**
    6. * 网站
    7. */
    8. @Data
    9. public class Website implements Serializable {
    10. @TableId
    11. private Integer websiteId;
    12. private String websiteImg;//图片
    13. private String websiteName;//名称
    14. private String websiteUrl;//url
    15. private String websiteDesc;//描述
    16. private Integer websiteTypeId;//类型
    17. }

    mapper层

    1. package jkw.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import jkw.pojo.WebsiteType;
    4. public interface WebsiteTypeMapper extends BaseMapper {
    5. }
    1. package jkw.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import jkw.pojo.Website;
    4. public interface WebsiteMapper extends BaseMapper {
    5. }

     

    service层

    1. package jkw.service;
    2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    3. import jkw.pojo.WebsiteType;
    4. import java.util.List;
    5. public interface WebsiteTypeService {
    6. void add(WebsiteType WebsiteType);
    7. void update(WebsiteType WebsiteType);
    8. void delete(Integer id);
    9. WebsiteType findById(Integer id);
    10. List findAll();
    11. Page search(String search, int page, int size);
    12. }
    1. package jkw.service;
    2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    3. import jkw.pojo.Website;
    4. import java.util.List;
    5. public interface WebsiteService {
    6. void add(Website Website);
    7. void update(Website Website);
    8. void delete(Integer id);
    9. Website findById(Integer id);
    10. List findAll();
    11. Page search(String search, int page, int size);
    12. //根据typeId查询
    13. List findAllByWebsiteTypeId(Integer id);
    14. }

     

    1. package jkw.service.impl;
    2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    4. import jkw.mapper.WebsiteTypeMapper;
    5. import jkw.pojo.WebsiteType;
    6. import jkw.service.WebsiteTypeService;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.stereotype.Service;
    9. import org.springframework.transaction.annotation.Transactional;
    10. import java.util.List;
    11. @Service
    12. @Transactional
    13. public class WebsiteTypeServiceImpl implements WebsiteTypeService {
    14. @Autowired
    15. private WebsiteTypeMapper WebsiteTypeMapper;
    16. @Override
    17. public void add(WebsiteType WebsiteType) {
    18. WebsiteTypeMapper.insert(WebsiteType);
    19. }
    20. @Override
    21. public void update(WebsiteType WebsiteType) {
    22. WebsiteTypeMapper.updateById(WebsiteType);
    23. }
    24. @Override
    25. public void delete(Integer id) {
    26. WebsiteTypeMapper.deleteById(id);
    27. }
    28. @Override
    29. public WebsiteType findById(Integer id) {
    30. return WebsiteTypeMapper.selectById(id);
    31. }
    32. @Override
    33. public List findAll() {
    34. return WebsiteTypeMapper.selectList(null);
    35. }
    36. @Override
    37. public Page search(String search, int page, int size) {
    38. QueryWrapper queryWrapper = new QueryWrapper();
    39. if (search != null) {
    40. }
    41. return WebsiteTypeMapper.selectPage(new Page<>(page, size), queryWrapper);
    42. }
    43. }
    1. package jkw.service.impl;
    2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    4. import jkw.pojo.Website;
    5. import jkw.service.WebsiteService;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Service;
    8. import org.springframework.transaction.annotation.Transactional;
    9. import java.util.List;
    10. @Service
    11. @Transactional
    12. public class WebsiteServiceImpl implements WebsiteService {
    13. @Autowired
    14. private jkw.mapper.WebsiteMapper WebsiteMapper;
    15. @Override
    16. public void add(Website Website) {
    17. WebsiteMapper.insert(Website);
    18. }
    19. @Override
    20. public void update(Website Website) {
    21. WebsiteMapper.updateById(Website);
    22. }
    23. @Override
    24. public void delete(Integer id) {
    25. WebsiteMapper.deleteById(id);
    26. }
    27. @Override
    28. public Website findById(Integer id) {
    29. return WebsiteMapper.selectById(id);
    30. }
    31. @Override
    32. public List findAll() {
    33. return WebsiteMapper.selectList(null);
    34. }
    35. @Override
    36. public Page search(String search, int page, int size) {
    37. QueryWrapper queryWrapper = new QueryWrapper();
    38. if (search != null) {
    39. }
    40. return WebsiteMapper.selectPage(new Page<>(page, size), queryWrapper);
    41. }
    42. @Override
    43. public List findAllByWebsiteTypeId(Integer id) {
    44. QueryWrapper queryWrapper = new QueryWrapper<>();
    45. queryWrapper.eq("websiteTypeId", id);
    46. return WebsiteMapper.selectList(queryWrapper);
    47. }
    48. }

     

    控制层

    1. package jkw.controller.back;
    2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    3. import jkw.pojo.WebsiteType;
    4. import jkw.service.WebsiteTypeService;
    5. import jkw.vo.BaseResult;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.security.access.prepost.PreAuthorize;
    8. import org.springframework.web.bind.annotation.*;
    9. import java.util.List;
    10. @RequestMapping("/back/websiteType")
    11. @RestController
    12. @CrossOrigin
    13. public class WebsiteTypeCon {
    14. @Autowired
    15. private WebsiteTypeService WebsiteTypeService;
    16. /**
    17. * 新增
    18. *
    19. * @param WebsiteType
    20. * @return
    21. */
    22. @PostMapping("/add")
    23. @PreAuthorize("hasAnyAuthority('/website/website')")
    24. public BaseResult add(WebsiteType WebsiteType) {
    25. WebsiteTypeService.add(WebsiteType);
    26. return BaseResult.ok();
    27. }
    28. /**
    29. * 修改
    30. *
    31. * @param WebsiteType
    32. * @return
    33. */
    34. @PostMapping("/update")
    35. @PreAuthorize("hasAnyAuthority('/website/website')")
    36. public BaseResult update(WebsiteType WebsiteType) {
    37. WebsiteTypeService.update(WebsiteType);
    38. return BaseResult.ok();
    39. }
    40. /**
    41. * 删除
    42. *
    43. * @param websiteTypeId
    44. * @return
    45. */
    46. @DeleteMapping("/delete")
    47. @PreAuthorize("hasAnyAuthority('/website/website')")
    48. public BaseResult delete(Integer websiteTypeId) {
    49. WebsiteTypeService.delete(websiteTypeId);
    50. return BaseResult.ok();
    51. }
    52. /**
    53. * 根据id查询
    54. *
    55. * @param websiteTypeId
    56. * @return
    57. */
    58. @GetMapping("/findById")
    59. @PreAuthorize("hasAnyAuthority('/website/website')")
    60. public BaseResult findById(Integer websiteTypeId) {
    61. WebsiteType WebsiteType = WebsiteTypeService.findById(websiteTypeId);
    62. return BaseResult.ok(WebsiteType);
    63. }
    64. /**
    65. * 查询所有
    66. *
    67. * @return
    68. */
    69. @GetMapping("/findAll")
    70. @PreAuthorize("hasAnyAuthority('/website/website')")
    71. public BaseResult findAll() {
    72. List all = WebsiteTypeService.findAll();
    73. return BaseResult.ok(all);
    74. }
    75. /**
    76. * 分页查询
    77. *
    78. * @param page
    79. * @param size
    80. * @return
    81. */
    82. @GetMapping("/search")
    83. @PreAuthorize("hasAnyAuthority('/website/website')")
    84. public BaseResult search(String search, int page, int size) {
    85. Page brandPage = WebsiteTypeService.search(search, page, size);
    86. return BaseResult.ok(brandPage);
    87. }
    88. }
    1. package jkw.controller.back;
    2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    3. import jkw.pojo.Website;
    4. import jkw.vo.BaseResult;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.security.access.prepost.PreAuthorize;
    7. import org.springframework.web.bind.annotation.*;
    8. import java.util.List;
    9. @RestController
    10. @RequestMapping("/back/website")
    11. @CrossOrigin
    12. public class WebsiteCon {
    13. @Autowired
    14. private jkw.service.WebsiteService WebsiteService;
    15. /**
    16. * 新增
    17. *
    18. * @param Website
    19. * @return
    20. */
    21. @PostMapping("/add")
    22. @PreAuthorize("hasAnyAuthority('/website/website')")
    23. public BaseResult add(Website Website) {
    24. WebsiteService.add(Website);
    25. return BaseResult.ok();
    26. }
    27. /**
    28. * 修改
    29. *
    30. * @param Website
    31. * @return
    32. */
    33. @PostMapping("/update")
    34. @PreAuthorize("hasAnyAuthority('/website/website')")
    35. public BaseResult update(Website Website) {
    36. WebsiteService.update(Website);
    37. return BaseResult.ok();
    38. }
    39. /**
    40. * 删除
    41. *
    42. * @param websiteId
    43. * @return
    44. */
    45. @DeleteMapping("/delete")
    46. @PreAuthorize("hasAnyAuthority('/website/website')")
    47. public BaseResult delete(Integer websiteId) {
    48. WebsiteService.delete(websiteId);
    49. return BaseResult.ok();
    50. }
    51. /**
    52. * 根据id查询
    53. *
    54. * @param websiteId
    55. * @return
    56. */
    57. @GetMapping("/findById")
    58. @PreAuthorize("hasAnyAuthority('/website/website')")
    59. public BaseResult findById(Integer websiteId) {
    60. Website Website = WebsiteService.findById(websiteId);
    61. return BaseResult.ok(Website);
    62. }
    63. /**
    64. * 查询所有
    65. *
    66. * @return
    67. */
    68. @GetMapping("/findAll")
    69. @PreAuthorize("hasAnyAuthority('/website/website')")
    70. public BaseResult findAll() {
    71. List all = WebsiteService.findAll();
    72. return BaseResult.ok(all);
    73. }
    74. /**
    75. * 分页查询
    76. *
    77. * @param page
    78. * @param size
    79. * @return
    80. */
    81. @GetMapping("/search")
    82. @PreAuthorize("hasAnyAuthority('/website/website')")
    83. public BaseResult search(String search, int page, int size) {
    84. Page brandPage = WebsiteService.search(search, page, size);
    85. return BaseResult.ok(brandPage);
    86. }
    87. }
    1. package jkw.controller.front;
    2. import jkw.pojo.Website;
    3. import jkw.pojo.WebsiteType;
    4. import jkw.service.WebsiteService;
    5. import jkw.service.WebsiteTypeService;
    6. import jkw.vo.BaseResult;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.web.bind.annotation.CrossOrigin;
    9. import org.springframework.web.bind.annotation.GetMapping;
    10. import org.springframework.web.bind.annotation.RequestMapping;
    11. import org.springframework.web.bind.annotation.RestController;
    12. import java.util.List;
    13. @RequestMapping("/front/website")
    14. @RestController
    15. @CrossOrigin
    16. public class FrontWebsiteCon {
    17. @Autowired
    18. private WebsiteService websiteService;
    19. @Autowired
    20. private WebsiteTypeService websiteTypeService;
    21. /**
    22. * 查询所有网站类型以及对应的网站
    23. *
    24. * @return
    25. */
    26. @GetMapping("/findAllTypes")
    27. public BaseResult findAllTypeWithWebsite() {
    28. List websiteTypeList = websiteTypeService.findAll();
    29. for (WebsiteType websiteType : websiteTypeList) {
    30. List websiteList = websiteService.findAllByWebsiteTypeId(websiteType.getWebsiteTypeId());
    31. websiteType.setWebsites(websiteList);
    32. }
    33. return BaseResult.ok(websiteTypeList);
    34. }
    35. }

  • 相关阅读:
    《Missing Parts》NFT 作品集第 5 系列上线 The Sandbox 市场平台
    Spring Security 在登录时如何添加图形验证码
    flutter开发之安装dart
    NLP - word2vec详解
    【微软】【ICLR 2022】TAPEX:通过学习神经 SQL 执行器进行表预训练
    AI艺术创作之MidJourney 的新 V4 算法太疯狂了
    C++算法之旅、09 力扣篇 | 常见面试笔试题(上)算法小白专用
    12 Go的接口
    DAG(有向无环图)的实现方法
    Python人员信息管理系统(简直期末人福音)
  • 原文地址:https://blog.csdn.net/m0_63040701/article/details/133100340