From a9481db8e561a404d52e575b89257e9cf57ed58e Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Mon, 29 Jul 2024 16:42:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E5=AE=B9bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/cms/api/CMSContentAPI.java | 15 +- .../cms/controller/CmsContentController.java | 1 - .../com/ruoyi/cms/core/NewTreeSelect.java | 36 +- .../domain/HitRegistrationStudentInfo.java | 4 +- .../cms/service/ICmsCategoryService.java | 5 +- .../ruoyi/cms/service/ICmsContentService.java | 7 + .../service/impl/CmsCategoryServiceImpl.java | 4 +- .../service/impl/CmsContentServiceImpl.java | 17 + .../system/SysProfileController.java | 28 +- .../resources/mapper/cms/CmsContentMapper.xml | 180 +-- .../classes/mapper/cms/CmsCategoryMapper.xml | 1 + .../ruoyi/system/service/ISysMenuService.java | 2 + .../service/impl/SysMenuServiceImpl.java | 279 ++--- ruoyi-ui/.env.development | 5 +- ruoyi-ui/src/api/system/user.js | 16 + .../src/components/HeaderSearch/index.vue | 2 +- ruoyi-ui/src/layout/components/Navbar.vue | 26 +- .../src/layout/components/Sidebar/Logo.vue | 22 +- ruoyi-ui/src/views/cms/editor/index.vue | 36 +- .../src/views/dashboard/serverInfo/index.vue | 68 + .../src/views/dashboard/shortcut/index.vue | 64 + .../src/views/dashboard/userInfo/index.vue | 86 ++ ruoyi-ui/src/views/hit/competition/index.vue | 12 +- .../hit/registrationStudentInfo/index.vue | 11 +- ruoyi-ui/src/views/index.vue | 1105 +---------------- ruoyi-ui/src/views/login.vue | 8 +- 26 files changed, 658 insertions(+), 1382 deletions(-) create mode 100644 ruoyi-ui/src/views/dashboard/serverInfo/index.vue create mode 100644 ruoyi-ui/src/views/dashboard/shortcut/index.vue create mode 100644 ruoyi-ui/src/views/dashboard/userInfo/index.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/api/CMSContentAPI.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/api/CMSContentAPI.java index 804da18..fdcee1d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/api/CMSContentAPI.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/api/CMSContentAPI.java @@ -5,10 +5,7 @@ import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @Anonymous @@ -29,4 +26,14 @@ public class CMSContentAPI extends BaseController { return success(contentService.selectCmsContentById(id)); } + /** + * 搜索 + * @param query + * @return + */ + @GetMapping("/search") + public AjaxResult searchContent(@RequestParam("query") String query){ + return success(contentService.searchContent(query)); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/controller/CmsContentController.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/controller/CmsContentController.java index 882a9ae..403b913 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/controller/CmsContentController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/controller/CmsContentController.java @@ -86,7 +86,6 @@ public class CmsContentController extends BaseController @PostMapping public AjaxResult add(@RequestBody CmsContent cmsContent) { - System.out.println(cmsContent); return toAjax(cmsContentService.insertCmsContent(cmsContent)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/core/NewTreeSelect.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/core/NewTreeSelect.java index 164f7c8..dd7e171 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/core/NewTreeSelect.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/core/NewTreeSelect.java @@ -1,20 +1,44 @@ package com.ruoyi.cms.core; +import com.fasterxml.jackson.annotation.JsonInclude; import com.ruoyi.cms.domain.CmsCategory; import com.ruoyi.common.core.domain.TreeSelect; +import lombok.Data; +import java.util.List; import java.util.stream.Collectors; /** - * 新增NewTreeSelect类继承TreeSelect - * 增加构造方法使用TreeSelect + * 新增NewTreeSelect */ -public class NewTreeSelect extends TreeSelect { +@Data +public class NewTreeSelect{ + + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private Long id; + + /** 节点名称 */ + private String label; + + /** 跳转路径 */ + private String jumpUrl; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public NewTreeSelect() + { + + } public NewTreeSelect(CmsCategory category) { - super.setId(category.getId()); - super.setLabel(category.getCategoryName()); - super.setChildren(category.getChildren().stream().map(NewTreeSelect::new).collect(Collectors.toList())); + this.id = category.getId(); + this.label = category.getCategoryName(); + this.jumpUrl = category.getCategoryUrl(); + this.children = category.getChildren().stream().map(NewTreeSelect::new).collect(Collectors.toList()); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/domain/HitRegistrationStudentInfo.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/domain/HitRegistrationStudentInfo.java index 80bb8d6..eb3c131 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/domain/HitRegistrationStudentInfo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/domain/HitRegistrationStudentInfo.java @@ -54,11 +54,11 @@ public class HitRegistrationStudentInfo extends BaseEntity /** 领队教师ID集合 */ @Excel(name = "领队教师ID集合") - private List leaderIds; + private List leaderIds; /** 指导老师ID集合 */ @Excel(name = "指导老师ID集合") - private List guideIds; + private List guideIds; /** 逻辑删除0未删除1真删除 */ private Integer delFlag; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsCategoryService.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsCategoryService.java index d75964c..68e2d50 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsCategoryService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsCategoryService.java @@ -4,6 +4,7 @@ import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; import com.github.pagehelper.PageInfo; +import com.ruoyi.cms.core.NewTreeSelect; import com.ruoyi.cms.domain.CmsCategory; import com.ruoyi.cms.domain.CmsContent; import com.ruoyi.cms.domain.vo.CMSCategoryVo; @@ -83,7 +84,7 @@ public interface ICmsCategoryService extends IService * @param category 栏目信息 * @return 栏目树信息集合 */ - public List selectCmsCategoryTreeList(CmsCategory category); + public List selectCmsCategoryTreeList(CmsCategory category); /** * 构建前端所需要树结构 @@ -99,7 +100,7 @@ public interface ICmsCategoryService extends IService * @param categorys 栏目列表 * @return 下拉树结构列表 */ - public List buildCmsCategoryTreeSelect(List categorys); + public List buildCmsCategoryTreeSelect(List categorys); /** * 获取栏目下的子栏目及文章 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsContentService.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsContentService.java index ab0fe99..2a98d65 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsContentService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/ICmsContentService.java @@ -72,4 +72,11 @@ public interface ICmsContentService extends IService * @return */ int changeContentByIds(Long[] ids, String username); + + /** + * 搜索 + * @param query + * @return + */ + List searchContent(String query); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsCategoryServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsCategoryServiceImpl.java index c9df404..8f1ca7e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsCategoryServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsCategoryServiceImpl.java @@ -135,7 +135,7 @@ public class CmsCategoryServiceImpl extends ServiceImpl selectCmsCategoryTreeList(CmsCategory category) { + public List selectCmsCategoryTreeList(CmsCategory category) { List categorys = SpringUtils.getAopProxy(this).selectCmsCategoryList(category); return buildCmsCategoryTreeSelect(categorys); } @@ -170,7 +170,7 @@ public class CmsCategoryServiceImpl extends ServiceImpl buildCmsCategoryTreeSelect(List categorys) { + public List buildCmsCategoryTreeSelect(List categorys) { List categoryTrees = buildCmsCategoryTree(categorys); return categoryTrees.stream().map(NewTreeSelect::new).collect(Collectors.toList()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsContentServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsContentServiceImpl.java index 5f9be74..a6d0ee4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsContentServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/cms/service/impl/CmsContentServiceImpl.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.List; import cn.hutool.core.lang.Snowflake; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.DateUtils; import io.swagger.models.auth.In; @@ -165,4 +166,20 @@ public class CmsContentServiceImpl extends ServiceImpl searchContent(String query){ + List list = baseMapper.selectList(new QueryWrapper() + .like("content_title", query) + .or() + .like("content_detail", query) + .or() + .like("summary", query) + ); + return list; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index d5faedd..a435f99 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -1,13 +1,10 @@ package com.ruoyi.web.controller.system; +import com.ruoyi.common.core.domain.TreeSelect; +import com.ruoyi.common.core.domain.entity.SysMenu; +import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; @@ -23,6 +20,9 @@ import com.ruoyi.common.utils.file.MimeTypeUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.service.ISysUserService; +import java.util.List; +import java.util.stream.Collectors; + /** * 个人信息 业务处理 * @@ -38,6 +38,9 @@ public class SysProfileController extends BaseController @Autowired private TokenService tokenService; + @Autowired + private ISysMenuService menuService; + /** * 个人信息 */ @@ -134,4 +137,15 @@ public class SysProfileController extends BaseController } return error("上传图片异常,请联系管理员"); } + + /** + * 获取当前用户的菜单 + * @return + */ + @GetMapping("/shortcuts") + public AjaxResult getHomeShortcuts(){ + List sysMenus = menuService.selectMenuList(SecurityUtils.getLoginUser().getUserId()); + List menus = menuService.getHomeShortcuts(sysMenus); + return success(menus); + } } diff --git a/ruoyi-admin/src/main/resources/mapper/cms/CmsContentMapper.xml b/ruoyi-admin/src/main/resources/mapper/cms/CmsContentMapper.xml index 55da25c..67de817 100644 --- a/ruoyi-admin/src/main/resources/mapper/cms/CmsContentMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/cms/CmsContentMapper.xml @@ -5,57 +5,87 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - select id, category_id, content_type,image_url, video_url, content_title, content_img, content_detail, source, source_url, original, author, editor, summary, status, publish_date, offline_date, is_accessory, accessory_url, remark, del_flag, create_time, create_by, update_time, update_by from cms_content + select id, + category_id, + content_type, + image_url, + video_url, + content_title, + content_img, + content_detail, + source, + source_url, + original, + author, + editor, + summary, + status, + publish_date, + offline_date, + is_accessory, + accessory_url, + remark, + del_flag, + create_time, + create_by, + update_time, + update_by + from cms_content @@ -111,51 +141,59 @@ #{publishDate}, #{offlineDate}, #{isAccessory}, - #{accessoryUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + + #{accessoryUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + #{remark}, #{delFlag}, #{createTime}, #{createBy}, #{updateTime}, #{updateBy}, - #{imageUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, - #{videoUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + + #{imageUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + + + #{videoUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + update cms_content - category_id = #{categoryId}, - content_type = #{contentType}, - content_title = #{contentTitle}, - content_img = #{contentImg}, - content_detail = #{contentDetail}, - source = #{source}, - source_url = #{sourceUrl}, - original = #{original}, - author = #{author}, - editor = #{editor}, - summary = #{summary}, - status = #{status}, - publish_date = #{publishDate}, - offline_date = #{offlineDate}, - is_accessory = #{isAccessory}, - accessory_url = #{accessoryUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, - remark = #{remark}, - del_flag = #{delFlag}, - create_time = #{createTime}, - create_by = #{createBy}, - update_time = #{updateTime}, - update_by = #{updateBy}, - image_url = #{imageUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, - video_url = #{videoUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + category_id = #{categoryId}, + content_type = #{contentType}, + content_title = #{contentTitle}, + content_img = #{contentImg}, + content_detail = #{contentDetail}, + source = #{source}, + source_url = #{sourceUrl}, + original = #{original}, + author = #{author}, + editor = #{editor}, + summary = #{summary}, + status = #{status}, + publish_date = #{publishDate}, + offline_date = #{offlineDate}, + is_accessory = #{isAccessory}, + accessory_url = #{accessoryUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + remark = #{remark}, + del_flag = #{delFlag}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + image_url = #{imageUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, + video_url = #{videoUrl,jdbcType=OTHER,typeHandler=com.ruoyi.system.handler.MysqlTypeHandler}, where id = #{id} - delete from cms_content where id = #{id} + delete + from cms_content + where id = #{id} diff --git a/ruoyi-admin/target/classes/mapper/cms/CmsCategoryMapper.xml b/ruoyi-admin/target/classes/mapper/cms/CmsCategoryMapper.xml index e2a3986..2e271d4 100644 --- a/ruoyi-admin/target/classes/mapper/cms/CmsCategoryMapper.xml +++ b/ruoyi-admin/target/classes/mapper/cms/CmsCategoryMapper.xml @@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and parent_id = #{parentId} and is_frame = #{isFrame} and is_disable = #{isDisable} + and del_flag = 0 order by parent_id, category_sort diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java index 7d60696..7ab9a58 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java @@ -141,4 +141,6 @@ public interface ISysMenuService * @return 结果 */ public boolean checkMenuNameUnique(SysMenu menu); + + List getHomeShortcuts(List sysMenus); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index 78a7830..589c2c0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -1,13 +1,8 @@ package com.ruoyi.system.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.constant.Constants; @@ -27,12 +22,11 @@ import com.ruoyi.system.service.ISysMenuService; /** * 菜单 业务层处理 - * + * * @author ruoyi */ @Service -public class SysMenuServiceImpl implements ISysMenuService -{ +public class SysMenuServiceImpl implements ISysMenuService { public static final String PREMISSION_STRING = "perms[\"{0}\"]"; @Autowired @@ -46,33 +40,28 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 根据用户查询系统菜单列表 - * + * * @param userId 用户ID * @return 菜单列表 */ @Override - public List selectMenuList(Long userId) - { + public List selectMenuList(Long userId) { return selectMenuList(new SysMenu(), userId); } /** * 查询系统菜单列表 - * + * * @param menu 菜单信息 * @return 菜单列表 */ @Override - public List selectMenuList(SysMenu menu, Long userId) - { + public List selectMenuList(SysMenu menu, Long userId) { List menuList = null; // 管理员显示所有菜单信息 - if (SysUser.isAdmin(userId)) - { + if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); - } - else - { + } else { menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } @@ -81,19 +70,16 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 根据用户ID查询权限 - * + * * @param userId 用户ID * @return 权限列表 */ @Override - public Set selectMenuPermsByUserId(Long userId) - { + public Set selectMenuPermsByUserId(Long userId) { List perms = menuMapper.selectMenuPermsByUserId(userId); Set permsSet = new HashSet<>(); - for (String perm : perms) - { - if (StringUtils.isNotEmpty(perm)) - { + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { permsSet.addAll(Arrays.asList(perm.trim().split(","))); } } @@ -102,19 +88,16 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 根据角色ID查询权限 - * + * * @param roleId 角色ID * @return 权限列表 */ @Override - public Set selectMenuPermsByRoleId(Long roleId) - { + public Set selectMenuPermsByRoleId(Long roleId) { List perms = menuMapper.selectMenuPermsByRoleId(roleId); Set permsSet = new HashSet<>(); - for (String perm : perms) - { - if (StringUtils.isNotEmpty(perm)) - { + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { permsSet.addAll(Arrays.asList(perm.trim().split(","))); } } @@ -123,20 +106,16 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 根据用户ID查询菜单 - * + * * @param userId 用户名称 * @return 菜单列表 */ @Override - public List selectMenuTreeByUserId(Long userId) - { + public List selectMenuTreeByUserId(Long userId) { List menus = null; - if (SecurityUtils.isAdmin(userId)) - { + if (SecurityUtils.isAdmin(userId)) { menus = menuMapper.selectMenuTreeAll(); - } - else - { + } else { menus = menuMapper.selectMenuTreeByUserId(userId); } return getChildPerms(menus, 0); @@ -144,29 +123,26 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 根据角色ID查询菜单树信息 - * + * * @param roleId 角色ID * @return 选中菜单列表 */ @Override - public List selectMenuListByRoleId(Long roleId) - { + public List selectMenuListByRoleId(Long roleId) { SysRole role = roleMapper.selectRoleById(roleId); return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); } /** * 构建前端路由所需要的菜单 - * + * * @param menus 菜单列表 * @return 路由列表 */ @Override - public List buildMenus(List menus) - { + public List buildMenus(List menus) { List routers = new LinkedList(); - for (SysMenu menu : menus) - { + for (SysMenu menu : menus) { RouterVo router = new RouterVo(); router.setHidden("1".equals(menu.getVisible())); router.setName(getRouteName(menu)); @@ -175,14 +151,11 @@ public class SysMenuServiceImpl implements ISysMenuService router.setQuery(menu.getQuery()); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); List cMenus = menu.getChildren(); - if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) - { + if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); router.setRedirect("noRedirect"); router.setChildren(buildMenus(cMenus)); - } - else if (isMenuFrame(menu)) - { + } else if (isMenuFrame(menu)) { router.setMeta(null); List childrenList = new ArrayList(); RouterVo children = new RouterVo(); @@ -193,9 +166,7 @@ public class SysMenuServiceImpl implements ISysMenuService children.setQuery(menu.getQuery()); childrenList.add(children); router.setChildren(childrenList); - } - else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) - { + } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); router.setPath("/"); List childrenList = new ArrayList(); @@ -215,27 +186,23 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 构建前端所需要树结构 - * + * * @param menus 菜单列表 * @return 树结构列表 */ @Override - public List buildMenuTree(List menus) - { + public List buildMenuTree(List menus) { List returnList = new ArrayList(); List tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); - for (Iterator iterator = menus.iterator(); iterator.hasNext();) - { + for (Iterator iterator = menus.iterator(); iterator.hasNext(); ) { SysMenu menu = (SysMenu) iterator.next(); // 如果是顶级节点, 遍历该父节点的所有子节点 - if (!tempList.contains(menu.getParentId())) - { + if (!tempList.contains(menu.getParentId())) { recursionFn(menus, menu); returnList.add(menu); } } - if (returnList.isEmpty()) - { + if (returnList.isEmpty()) { returnList = menus; } return returnList; @@ -243,104 +210,95 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 构建前端所需要下拉树结构 - * + * * @param menus 菜单列表 * @return 下拉树结构列表 */ @Override - public List buildMenuTreeSelect(List menus) - { + public List buildMenuTreeSelect(List menus) { List menuTrees = buildMenuTree(menus); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } /** * 根据菜单ID查询信息 - * + * * @param menuId 菜单ID * @return 菜单信息 */ @Override - public SysMenu selectMenuById(Long menuId) - { + public SysMenu selectMenuById(Long menuId) { return menuMapper.selectMenuById(menuId); } /** * 是否存在菜单子节点 - * + * * @param menuId 菜单ID * @return 结果 */ @Override - public boolean hasChildByMenuId(Long menuId) - { + public boolean hasChildByMenuId(Long menuId) { int result = menuMapper.hasChildByMenuId(menuId); return result > 0; } /** * 查询菜单使用数量 - * + * * @param menuId 菜单ID * @return 结果 */ @Override - public boolean checkMenuExistRole(Long menuId) - { + public boolean checkMenuExistRole(Long menuId) { int result = roleMenuMapper.checkMenuExistRole(menuId); return result > 0; } /** * 新增保存菜单信息 - * + * * @param menu 菜单信息 * @return 结果 */ @Override - public int insertMenu(SysMenu menu) - { + public int insertMenu(SysMenu menu) { return menuMapper.insertMenu(menu); } /** * 修改保存菜单信息 - * + * * @param menu 菜单信息 * @return 结果 */ @Override - public int updateMenu(SysMenu menu) - { + public int updateMenu(SysMenu menu) { return menuMapper.updateMenu(menu); } /** * 删除菜单管理信息 - * + * * @param menuId 菜单ID * @return 结果 */ @Override - public int deleteMenuById(Long menuId) - { + public int deleteMenuById(Long menuId) { return menuMapper.deleteMenuById(menuId); } /** * 校验菜单名称是否唯一 - * + * * @param menu 菜单信息 * @return 结果 */ @Override - public boolean checkMenuNameUnique(SysMenu menu) - { + public boolean checkMenuNameUnique(SysMenu menu) { Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); - if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -348,15 +306,13 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 获取路由名称 - * + * * @param menu 菜单信息 * @return 路由名称 */ - public String getRouteName(SysMenu menu) - { + public String getRouteName(SysMenu menu) { // 非外链并且是一级目录(类型为目录) - if (isMenuFrame(menu)) - { + if (isMenuFrame(menu)) { return StringUtils.EMPTY; } return getRouteName(menu.getRouteName(), menu.getPath()); @@ -364,40 +320,35 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 获取路由名称,如没有配置路由名称则取路由地址 - * + * * @param routerName 路由名称 - * @param path 路由地址 + * @param path 路由地址 * @return 路由名称(驼峰格式) */ - public String getRouteName(String name, String path) - { + public String getRouteName(String name, String path) { String routerName = StringUtils.isNotEmpty(name) ? name : path; return StringUtils.capitalize(routerName); } /** * 获取路由地址 - * + * * @param menu 菜单信息 * @return 路由地址 */ - public String getRouterPath(SysMenu menu) - { + public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); // 内链打开外网方式 - if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) - { + if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { routerPath = innerLinkReplaceEach(routerPath); } // 非外链并且是一级目录(类型为目录) if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) - && UserConstants.NO_FRAME.equals(menu.getIsFrame())) - { + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { routerPath = "/" + menu.getPath(); } // 非外链并且是一级目录(类型为菜单) - else if (isMenuFrame(menu)) - { + else if (isMenuFrame(menu)) { routerPath = "/"; } return routerPath; @@ -405,23 +356,17 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 获取组件信息 - * + * * @param menu 菜单信息 * @return 组件信息 */ - public String getComponent(SysMenu menu) - { + public String getComponent(SysMenu menu) { String component = UserConstants.LAYOUT; - if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) - { + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { component = menu.getComponent(); - } - else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) - { + } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) { component = UserConstants.INNER_LINK; - } - else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) - { + } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) { component = UserConstants.PARENT_VIEW; } return component; @@ -429,54 +374,48 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 是否为菜单内部跳转 - * + * * @param menu 菜单信息 * @return 结果 */ - public boolean isMenuFrame(SysMenu menu) - { + public boolean isMenuFrame(SysMenu menu) { return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) && menu.getIsFrame().equals(UserConstants.NO_FRAME); } /** * 是否为内链组件 - * + * * @param menu 菜单信息 * @return 结果 */ - public boolean isInnerLink(SysMenu menu) - { + public boolean isInnerLink(SysMenu menu) { return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); } /** * 是否为parent_view组件 - * + * * @param menu 菜单信息 * @return 结果 */ - public boolean isParentView(SysMenu menu) - { + public boolean isParentView(SysMenu menu) { return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); } /** * 根据父节点的ID获取所有子节点 - * - * @param list 分类表 + * + * @param list 分类表 * @param parentId 传入的父节点ID * @return String */ - public List getChildPerms(List list, int parentId) - { + public List getChildPerms(List list, int parentId) { List returnList = new ArrayList(); - for (Iterator iterator = list.iterator(); iterator.hasNext();) - { + for (Iterator iterator = list.iterator(); iterator.hasNext(); ) { SysMenu t = (SysMenu) iterator.next(); // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 - if (t.getParentId() == parentId) - { + if (t.getParentId() == parentId) { recursionFn(list, t); returnList.add(t); } @@ -486,19 +425,16 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 递归列表 - * + * * @param list 分类表 - * @param t 子节点 + * @param t 子节点 */ - private void recursionFn(List list, SysMenu t) - { + private void recursionFn(List list, SysMenu t) { // 得到子节点列表 List childList = getChildList(list, t); t.setChildren(childList); - for (SysMenu tChild : childList) - { - if (hasChild(list, tChild)) - { + for (SysMenu tChild : childList) { + if (hasChild(list, tChild)) { recursionFn(list, tChild); } } @@ -507,15 +443,12 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 得到子节点列表 */ - private List getChildList(List list, SysMenu t) - { + private List getChildList(List list, SysMenu t) { List tlist = new ArrayList(); Iterator it = list.iterator(); - while (it.hasNext()) - { + while (it.hasNext()) { SysMenu n = (SysMenu) it.next(); - if (n.getParentId().longValue() == t.getMenuId().longValue()) - { + if (n.getParentId().longValue() == t.getMenuId().longValue()) { tlist.add(n); } } @@ -525,19 +458,43 @@ public class SysMenuServiceImpl implements ISysMenuService /** * 判断是否有子节点 */ - private boolean hasChild(List list, SysMenu t) - { + private boolean hasChild(List list, SysMenu t) { return getChildList(list, t).size() > 0; } /** * 内链域名特殊字符替换 - * + * * @return 替换后的内链域名 */ - public String innerLinkReplaceEach(String path) - { - return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" }, - new String[] { "", "", "", "/", "/" }); + public String innerLinkReplaceEach(String path) { + return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"}, + new String[]{"", "", "", "/", "/"}); + } + + /** + * 获取当前用户的菜单 + * + * @return + */ + @Override + public List getHomeShortcuts(List sysMenus) { + // 取出所有非按钮的 + List result = sysMenus.stream() + .filter(item -> !item.getMenuType().equals("F")) + .filter(item -> item.getVisible().equals("0")) + .collect(Collectors.toList()); + // 取出所有一级菜单,转成map,id为key,path为value + Map parent = result.stream() + .filter(item -> item.getMenuType().equals("M")) + .collect(Collectors.toMap(SysMenu::getMenuId, SysMenu::getPath)); + // 取出所有二级菜单,拼接path + List menus = result.stream() + .filter(item -> item.getMenuType().equals("C")) + .map(item -> { + item.setPath(parent.get(item.getParentId()) + "/" + item.getPath()); + return item; + }).collect(Collectors.toList()); + return menus; } } diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development index bd0487f..7b6972a 100644 --- a/ruoyi-ui/.env.development +++ b/ruoyi-ui/.env.development @@ -1,11 +1,12 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 后台管理系统 # 开发环境配置 ENV = 'development' # 若依管理系统/开发环境 -VUE_APP_BASE_API = 'https://f382b38516.zicp.fun' +# VUE_APP_BASE_API = 'https://f382b38516.zicp.fun' +VUE_APP_BASE_API = 'http://localhost:8080' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/ruoyi-ui/src/api/system/user.js b/ruoyi-ui/src/api/system/user.js index 9b0211a..ec1842d 100644 --- a/ruoyi-ui/src/api/system/user.js +++ b/ruoyi-ui/src/api/system/user.js @@ -134,3 +134,19 @@ export function deptTreeSelect() { method: 'get' }) } + +// 获取用户信息 +export function getHomeUserInfo() { + return request({ + url: "/system/user/profile", + method: "get" + }) +} + +// 获取当前用户的菜单信息 +export function getHomeShortcuts() { + return request({ + url: "/system/user/profile/shortcuts", + method: "get" + }) +} diff --git a/ruoyi-ui/src/components/HeaderSearch/index.vue b/ruoyi-ui/src/components/HeaderSearch/index.vue index 7d6780b..3a13870 100644 --- a/ruoyi-ui/src/components/HeaderSearch/index.vue +++ b/ruoyi-ui/src/components/HeaderSearch/index.vue @@ -8,7 +8,7 @@ filterable default-first-option remote - placeholder="Search" + placeholder="搜索" class="header-search-select" @change="change" > diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue index 466cd98..e18c380 100644 --- a/ruoyi-ui/src/layout/components/Navbar.vue +++ b/ruoyi-ui/src/layout/components/Navbar.vue @@ -9,19 +9,19 @@ @@ -34,9 +34,9 @@ 个人中心 - - 布局设置 - + + + 退出登录 diff --git a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue index 2774cc8..ed2a352 100644 --- a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue +++ b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue @@ -1,14 +1,18 @@ diff --git a/ruoyi-ui/src/views/cms/editor/index.vue b/ruoyi-ui/src/views/cms/editor/index.vue index bfc2f87..a0b32a4 100644 --- a/ruoyi-ui/src/views/cms/editor/index.vue +++ b/ruoyi-ui/src/views/cms/editor/index.vue @@ -3,7 +3,7 @@
- 保存 + 保存 发布
@@ -238,28 +238,33 @@ export default { // 发布 handlePublish() { this.form.status = "1" + this.form.publishDate = this.formatTimer(new Date()) + this.handleSave(); + }, + //保存 + handlerSaveBefore(){ + this.form.status = this.form.id !== null ? "3" : "0" this.handleSave(); }, // 新增 handleSave() { this.$refs["form"].validate(valid => { if (valid) { - this.$modal.loading("正在" + (this.form.status == "0" ? "保存" : "发布") + "内容,请稍候..."); + this.$modal.loading("正在" + (this.form.status !== "1" ? "保存" : "发布") + "内容,请稍候..."); // if:修改,else:新增 - if (this.form.id != null) { - this.form.status = "3" + if (this.form.id !== null) { this.changeUrl() updateContent(this.form).then(res => { - if (res.code == 200) { - this.$modal.msgSuccess(this.form.status == "0" ? "保存成功" : "发布成功"); + if (res.code === 200) { + this.$modal.msgSuccess(this.form.status !== "1" ? "保存成功" : "发布成功"); this.reset() } }) } else { this.changeUrl() addContent(this.form).then(res => { - if (res.code == 200) { - this.$modal.msgSuccess(this.form.status == "0" ? "保存成功" : "发布成功"); + if (res.code === 200) { + this.$modal.msgSuccess(this.form.status !== "1" ? "保存成功" : "发布成功"); this.reset() } }) @@ -290,6 +295,21 @@ export default { this.form.videoUrl = this.StrToArr(this.form.videoUrl) } }, + formatTimer: function(value) { + let date = new Date(value); + let y = date.getFullYear(); + let MM = date.getMonth() + 1; + MM = MM < 10 ? "0" + MM : MM; + let d = date.getDate(); + d = d < 10 ? "0" + d : d; + let h = date.getHours(); + h = h < 10 ? "0" + h : h; + let m = date.getMinutes(); + m = m < 10 ? "0" + m : m; + let s = date.getSeconds(); + s = s < 10 ? "0" + s : s; + return y + "-" + MM + "-" + d + " " + h + ":" + m; + } } } diff --git a/ruoyi-ui/src/views/dashboard/serverInfo/index.vue b/ruoyi-ui/src/views/dashboard/serverInfo/index.vue new file mode 100644 index 0000000..bdd5009 --- /dev/null +++ b/ruoyi-ui/src/views/dashboard/serverInfo/index.vue @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/dashboard/shortcut/index.vue b/ruoyi-ui/src/views/dashboard/shortcut/index.vue new file mode 100644 index 0000000..e7d6208 --- /dev/null +++ b/ruoyi-ui/src/views/dashboard/shortcut/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/ruoyi-ui/src/views/dashboard/userInfo/index.vue b/ruoyi-ui/src/views/dashboard/userInfo/index.vue new file mode 100644 index 0000000..2ca4cbc --- /dev/null +++ b/ruoyi-ui/src/views/dashboard/userInfo/index.vue @@ -0,0 +1,86 @@ + + + diff --git a/ruoyi-ui/src/views/hit/competition/index.vue b/ruoyi-ui/src/views/hit/competition/index.vue index 09d37e3..003e4cd 100644 --- a/ruoyi-ui/src/views/hit/competition/index.vue +++ b/ruoyi-ui/src/views/hit/competition/index.vue @@ -59,7 +59,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['competition:competition:add']" + v-hasPermi="['hit:hitCompetition:add']" >新增 @@ -70,7 +70,7 @@ size="mini" :disabled="single" @click="handleUpdate" - v-hasPermi="['competition:competition:edit']" + v-hasPermi="['hit:hitCompetition:edit']" >修改 @@ -81,7 +81,7 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['competition:competition:remove']" + v-hasPermi="['hit:hitCompetition:remove']" >删除 @@ -91,7 +91,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['competition:competition:export']" + v-hasPermi="['hit:hitCompetition:export']" >导出 @@ -132,14 +132,14 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['competition:competition:edit']" + v-hasPermi="['hit:hitCompetition:edit']" >修改 删除 diff --git a/ruoyi-ui/src/views/hit/registrationStudentInfo/index.vue b/ruoyi-ui/src/views/hit/registrationStudentInfo/index.vue index 605bb5b..f05d21f 100644 --- a/ruoyi-ui/src/views/hit/registrationStudentInfo/index.vue +++ b/ruoyi-ui/src/views/hit/registrationStudentInfo/index.vue @@ -108,7 +108,7 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['registrationStudentInfo:registrationStudentInfo:remove']" + v-hasPermi="['hit:hitRegistrationStudentInfo:remove']" >删除 @@ -118,7 +118,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['registrationStudentInfo:registrationStudentInfo:export']" + v-hasPermi="['hit:hitRegistrationStudentInfo:export']" >导出 @@ -177,7 +177,7 @@ type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" - v-hasPermi="['registrationStudentInfo:registrationStudentInfo:remove']" + v-hasPermi="['hit:hitRegistrationStudentInfo:remove']" >删除 @@ -286,8 +286,9 @@ export default { listHitRegistrationStudentInfo(this.queryParams).then(response => { this.HitRegistrationStudentInfoList = response.rows; this.HitRegistrationStudentInfoList.forEach(item => { - item.leaderNames = item.leaderNames.join(",") - item.guideNames = item.guideNames.join(",") + console.log(item) + if (item.leaderNames !== null) item.leaderNames = item.leaderNames.join(","); + if (item.guideNames !== null) item.guideNames = item.guideNames.join(","); }) this.total = response.total; this.loading = false; diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 8081a92..d5152db 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -1,1096 +1,45 @@ - diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index 06c09d2..5e7bacb 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -1,7 +1,7 @@ @@ -72,8 +72,8 @@ export default { return { codeUrl: "", loginForm: { - username: "admin", - password: "admin123", + username: "", + password: "", rememberMe: false, code: "", uuid: ""