Browse Source

左侧菜单栏

master
ctw 2 months ago
parent
commit
b3c4d7884a
  1. 52
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMenuConfigController.java
  2. 63
      ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserMenuConfig.java
  3. 35
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMenuConfigMapper.java
  4. 30
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMenuConfigService.java
  5. 55
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMenuConfigServiceImpl.java
  6. 58
      ruoyi-system/src/main/resources/mapper/system/SysUserMenuConfigMapper.xml
  7. 23
      ruoyi-ui/src/api/system/userMenuConfig.js

52
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMenuConfigController.java

@ -0,0 +1,52 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.SysUserMenuConfig;
import com.ruoyi.system.service.ISysUserMenuConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 用户左侧菜单配置当前登录用户自己的配置
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/user/menuConfig")
public class SysUserMenuConfigController extends BaseController {
@Autowired
private ISysUserMenuConfigService menuConfigService;
/**
* 获取当前用户的左侧菜单配置
*/
@GetMapping
public AjaxResult getMyConfig() {
Long userId = getUserId();
SysUserMenuConfig config = menuConfigService.selectByUserId(userId);
if (config == null) {
return success(null);
}
return success(config);
}
/**
* 保存当前用户的左侧菜单配置
* 请求体: { "menuItems": "[{...}]", "position": "left" }
*/
@PutMapping
public AjaxResult saveMyConfig(@RequestBody Map<String, Object> body) {
Long userId = getUserId();
String menuItems = body != null && body.get("menuItems") != null ? body.get("menuItems").toString() : null;
String position = body != null && body.get("position") != null ? body.get("position").toString() : "left";
if (menuItems == null) {
return error("菜单项不能为空");
}
int rows = menuConfigService.saveConfig(userId, menuItems, position, getUsername());
return toAjax(rows);
}
}

63
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserMenuConfig.java

@ -0,0 +1,63 @@
package com.ruoyi.system.domain;
import javax.validation.constraints.Size;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 用户左侧菜单配置对象 sys_user_menu_config
*
* @author ruoyi
*/
public class SysUserMenuConfig extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 配置主键 */
private Long configId;
/** 用户ID */
@Excel(name = "用户ID")
private Long userId;
/** 菜单项JSON数组 */
@Excel(name = "菜单项")
private String menuItems;
/** 菜单位置 left/top/bottom */
@Excel(name = "菜单位置")
@Size(max = 20)
private String position;
public Long getConfigId() {
return configId;
}
public void setConfigId(Long configId) {
this.configId = configId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getMenuItems() {
return menuItems;
}
public void setMenuItems(String menuItems) {
this.menuItems = menuItems;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}

35
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMenuConfigMapper.java

@ -0,0 +1,35 @@
package com.ruoyi.system.mapper;
import com.ruoyi.system.domain.SysUserMenuConfig;
/**
* 用户左侧菜单配置 数据层
*
* @author ruoyi
*/
public interface SysUserMenuConfigMapper {
/**
* 根据用户ID查询配置
*
* @param userId 用户ID
* @return 配置信息
*/
SysUserMenuConfig selectByUserId(Long userId);
/**
* 新增配置
*
* @param config 配置信息
* @return 结果
*/
int insertConfig(SysUserMenuConfig config);
/**
* 更新配置
*
* @param config 配置信息
* @return 结果
*/
int updateConfig(SysUserMenuConfig config);
}

30
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMenuConfigService.java

@ -0,0 +1,30 @@
package com.ruoyi.system.service;
import com.ruoyi.system.domain.SysUserMenuConfig;
/**
* 用户左侧菜单配置 服务层
*
* @author ruoyi
*/
public interface ISysUserMenuConfigService {
/**
* 根据当前登录用户ID查询配置
*
* @param userId 用户ID
* @return 配置信息无则返回 null
*/
SysUserMenuConfig selectByUserId(Long userId);
/**
* 保存当前用户的菜单配置有则更新无则新增
*
* @param userId 用户ID
* @param menuItems 菜单项JSON字符串
* @param position 菜单位置
* @param operator 操作人createBy/updateBy
* @return 结果
*/
int saveConfig(Long userId, String menuItems, String position, String operator);
}

55
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMenuConfigServiceImpl.java

@ -0,0 +1,55 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserMenuConfig;
import com.ruoyi.system.mapper.SysUserMenuConfigMapper;
import com.ruoyi.system.service.ISysUserMenuConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 用户左侧菜单配置 服务层实现
*
* @author ruoyi
*/
@Service
public class SysUserMenuConfigServiceImpl implements ISysUserMenuConfigService {
@Autowired
private SysUserMenuConfigMapper menuConfigMapper;
@Override
public SysUserMenuConfig selectByUserId(Long userId) {
if (userId == null) {
return null;
}
return menuConfigMapper.selectByUserId(userId);
}
@Override
public int saveConfig(Long userId, String menuItems, String position, String operator) {
if (userId == null) {
return 0;
}
SysUserMenuConfig existing = menuConfigMapper.selectByUserId(userId);
if (existing != null) {
existing.setMenuItems(menuItems);
if (StringUtils.isNotEmpty(position)) {
existing.setPosition(position);
}
if (StringUtils.isNotEmpty(operator)) {
existing.setUpdateBy(operator);
}
return menuConfigMapper.updateConfig(existing);
} else {
SysUserMenuConfig config = new SysUserMenuConfig();
config.setUserId(userId);
config.setMenuItems(menuItems);
config.setPosition(StringUtils.isEmpty(position) ? "left" : position);
if (StringUtils.isNotEmpty(operator)) {
config.setCreateBy(operator);
}
return menuConfigMapper.insertConfig(config);
}
}
}

58
ruoyi-system/src/main/resources/mapper/system/SysUserMenuConfigMapper.xml

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysUserMenuConfigMapper">
<resultMap type="com.ruoyi.system.domain.SysUserMenuConfig" id="SysUserMenuConfigResult">
<id property="configId" column="config_id" />
<result property="userId" column="user_id" />
<result property="menuItems" column="menu_items" />
<result property="position" column="position" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectVo">
select config_id, user_id, menu_items, position, create_by, create_time, update_by, update_time, remark
from sys_user_menu_config
</sql>
<select id="selectByUserId" parameterType="Long" resultMap="SysUserMenuConfigResult">
<include refid="selectVo"/>
where user_id = #{userId} limit 1
</select>
<insert id="insertConfig" parameterType="com.ruoyi.system.domain.SysUserMenuConfig">
insert into sys_user_menu_config (
user_id,
menu_items,
position,
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
create_time
) values (
#{userId},
#{menuItems},
#{position},
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
sysdate()
)
</insert>
<update id="updateConfig" parameterType="com.ruoyi.system.domain.SysUserMenuConfig">
update sys_user_menu_config
<set>
<if test="menuItems != null">menu_items = #{menuItems},</if>
<if test="position != null and position != ''">position = #{position},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
</update>
</mapper>

23
ruoyi-ui/src/api/system/userMenuConfig.js

@ -0,0 +1,23 @@
import request from '@/utils/request'
/**
* 获取当前用户的左侧菜单配置
*/
export function getMenuConfig() {
return request({
url: '/system/user/menuConfig',
method: 'get'
})
}
/**
* 保存当前用户的左侧菜单配置
* @param {Object} data - { menuItems: string (JSON), position: string }
*/
export function saveMenuConfig(data) {
return request({
url: '/system/user/menuConfig',
method: 'put',
data: data
})
}
Loading…
Cancel
Save