Commit c0a9bcd3 authored by 赵啸非's avatar 赵啸非

添加新的菜单权限模块

parent 5367d641
Pipeline #2941 canceled with stages
...@@ -82,6 +82,11 @@ ...@@ -82,6 +82,11 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId> <artifactId>spring-boot-starter-amqp</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
......
...@@ -61,3 +61,139 @@ CREATE TABLE mortals_xhx_app_config( ...@@ -61,3 +61,139 @@ CREATE TABLE mortals_xhx_app_config(
`updateTime` datetime COMMENT '修改时间', `updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用列'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用列';
-- ----------------------------
-- 角色权限改造 2025-04-23
-- ----------------------------
-- ----------------------------
-- 资源信息业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_resource`;
CREATE TABLE mortals_xhx_resource(
`id` bigint(20) AUTO_INCREMENT COMMENT '菜单ID,主键,自增长',
`name` varchar(50) COMMENT '名称',
`groupName` varchar(255) COMMENT '分组名称',
`url` varchar(2000) COMMENT '连接地址,多个地址以逗号分隔',
`authType` tinyint(2) DEFAULT '3' COMMENT '权限类型 (0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看)',
`sourceType` tinyint(2) DEFAULT '0' COMMENT '资源类型,(0.系统资源,1.开放资源)',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createUserName` varchar(50) COMMENT '创建用户名称',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateUserName` varchar(50) COMMENT '创建用户名称',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `idx_name`(`name`) USING BTREE,
INDEX `idx_groupName`(`groupName`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='资源信息业务';
-- ----------------------------
-- 角色信息业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_role`;
CREATE TABLE mortals_xhx_role(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`name` varchar(50) COMMENT '角色名称',
`remark` varchar(200) COMMENT '备注',
`roleType` tinyint(2) DEFAULT '2' COMMENT '角色类型 (0.系统内置角色,1.默认系统角色.2.普通角色)',
`customerId` bigint(20) COMMENT '归属客户ID',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createUserName` varchar(50) COMMENT '创建用户名称',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateUserName` varchar(50) COMMENT '创建用户名称',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `idx_name`(`name`) USING BTREE,
INDEX `idx_roleType`(`roleType`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色信息业务';
-- ----------------------------
-- 角色资源权限业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_role_auth`;
CREATE TABLE mortals_xhx_role_auth(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`roleId` bigint(20) COMMENT '角色ID',
`menuId` bigint(20) COMMENT '菜单ID',
`resourceId` bigint(20) COMMENT '资源ID',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createUserName` varchar(50) COMMENT '创建用户名称',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateUserName` varchar(50) COMMENT '创建用户名称',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `idx_roleId`(`roleId`) USING BTREE,
INDEX `idx_menuId`(`menuId`) USING BTREE,
INDEX `resourceId` (`resourceId`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色资源权限业务';
-- ----------------------------
-- 角色用户业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_role_user`;
CREATE TABLE mortals_xhx_role_user(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`roleId` bigint(20) COMMENT '角色ID',
`userId` bigint(20) COMMENT '用户ID',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createUserName` varchar(50) COMMENT '创建用户名称',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateUserName` varchar(50) COMMENT '创建用户名称',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `idx_roleId`(`roleId`) USING BTREE,
INDEX `idx_userId`(`userId`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色用户业务';
-- ----------------------------
-- 菜单信息业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_menu`;
CREATE TABLE mortals_xhx_menu(
`id` bigint(20) AUTO_INCREMENT COMMENT '菜单ID,主键,自增长',
`name` varchar(50) COMMENT '菜单名称',
`url` varchar(256) COMMENT '路由地址',
`ancestors` varchar(255) COMMENT '当前节点父id路径,“,”分割',
`parentId` bigint(20) COMMENT '父菜单ID,一级菜单的该字段值为-1',
`linkType` tinyint(2) DEFAULT '0' COMMENT '链接方式 (0.普通,1.弹出,2.脚本)',
`imgPath` varchar(128) COMMENT '主菜单图标,主菜单图标的css样式名',
`buttonImgPath` varchar(128) COMMENT '按钮图标,按钮图标的css样式名',
`imgCommPath` varchar(128) COMMENT '常用菜单图标,常用菜单图标的css样式名',
`commMenu` tinyint(2) DEFAULT '1' COMMENT '是否常用菜单 (0.非常用,1.常用)',
`component` varchar(128) COMMENT 'vue组件路径',
`menuType` tinyint(2) DEFAULT '0' COMMENT '菜单类型 (0.目录,1.菜单,2.按钮)',
`authType` tinyint(2) DEFAULT '3' COMMENT '权限类型 (0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看)',
`visible` tinyint(2) DEFAULT '0' COMMENT '菜单显示状态 (0.显示,1.隐藏)',
`perms` varchar(128) COMMENT '权限标识,多个逗号分割',
`orderId` int(4) COMMENT '排序编号',
`status` tinyint(2) DEFAULT '1' COMMENT '菜单状态 (0.停用,1.启用)',
`cache` tinyint(2) DEFAULT '0' COMMENT '是否启用缓存 (0.否,1.是)',
`activeDir` varchar(128) COMMENT '激活目录',
`hideChildrenInMenu` tinyint(2) DEFAULT '0' COMMENT '是否隐藏(0.否,1.是)',
`remark` varchar(512) COMMENT '备注信息',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`createUserName` varchar(50) COMMENT '创建用户名称',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateUserName` varchar(50) COMMENT '创建用户名称',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `idx_name`(`name`) USING BTREE,
INDEX `idx_url`(`url`) USING BTREE,
INDEX `idx_parentId`(`parentId`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单信息业务';
ALTER TABLE mortals_xhx_param ADD COLUMN `updateUserId` bigint(20) COMMENT '更新用户';
ALTER TABLE mortals_xhx_param ADD COLUMN `updateUserName` varchar(50) COMMENT '创建用户名称';
ALTER TABLE mortals_xhx_param ADD COLUMN `updateTime` datetime COMMENT '更新时间';
\ No newline at end of file
package com.mortals.xhx.base.login.web; package com.mortals.xhx.base.login.web;
import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.common.Rest;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITokenService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.framework.util.AESUtil;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.menu.model.MenuEntity;
import com.mortals.xhx.base.system.menu.service.MenuService; import com.mortals.xhx.base.system.menu.service.MenuService;
import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.base.system.valid.service.ValidCodeService;
import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.user.LoginPdu; import com.mortals.xhx.common.pdu.user.LoginPdu;
import com.mortals.xhx.common.pdu.user.UserPdu; import com.mortals.xhx.common.utils.MenuEncodeUtil;
import com.mortals.xhx.feign.user.IUserFeign; import com.mortals.xhx.feign.user.IUserFeign;
import org.apache.commons.logging.Log; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -34,31 +26,24 @@ import javax.servlet.http.HttpServletResponse; ...@@ -34,31 +26,24 @@ import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT;
@RestController @RestController
@Slf4j
@RequestMapping("login") @RequestMapping("login")
public class LoginController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> { public class LoginController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> {
@Autowired
private UserService userService;
@Autowired
private ValidCodeService validCodeService;
@Autowired @Autowired
private ResourceService resourceService; private ResourceService resourceService;
@Autowired @Autowired
private MenuService menuService; private MenuService menuService;
@Autowired @Autowired
private ITokenService tokenService;
@Autowired
private ICacheService cacheService; private ICacheService cacheService;
@Autowired @Autowired
private IUserFeign userFeign; private IUserFeign userFeign;
private static Log logger = LogFactory.getLog(LoginController.class);
@RequestMapping("login") @RequestMapping("login")
public String login( @RequestBody LoginForm loginForm) throws Exception { public String login( @RequestBody LoginForm loginForm) throws Exception {
String loginName = loginForm.getLoginName(); String loginName = loginForm.getLoginName();
String password = loginForm.getPassword(); String password = loginForm.getPassword();
LoginPdu loginPdu = new LoginPdu(); LoginPdu loginPdu = new LoginPdu();
...@@ -80,68 +65,32 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -80,68 +65,32 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
IUser user = this.getCurUser(); IUser user = this.getCurUser();
if (user == null) { if (user == null) {
return ""; return JSONObject.toJSONString(Rest.fail(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT));
} }
Set<String> urls = resourceService.findUrlSetByUserId(user.getId()); Set<String> urls = resourceService.findUrlSetByUserId(user.getId());
List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls); log.info("userId:{},urls:{}", user.getId(), JSON.toJSONString(urls));
// List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls);
List<MenuEntity> treeMenuList = menuService.findTreeMenu(user);
String currUserName = user.getRealName(); String currUserName = user.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) { if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员"; currUserName = "管理员";
} }
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
String token = authTokenService.getToken(request);
data.put("token", token);
data.put("currUserName", currUserName); data.put("currUserName", currUserName);
data.put("barList", outlookBarList); data.put("menuList", treeMenuList);
data.put("id", user.getId()); data.put("id", user.getId());
data.put("userType", user.getUserType()); data.put("userType", user.getUserType());
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
//this.generateBlackCookie(request, response, user.getLoginName(), urls); cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, user.getId().toString(), MenuEncodeUtil.generateMenuUrlCode(urls));
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!"); ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
ret.put("resources", urls); ret.put("resources", urls);
return ret.toJSONString(); return ret.toJSONString();
} }
@RequestMapping("validcode")
public String validCode(HttpServletRequest request, HttpServletResponse response, LoginForm loginForm) {
JSONObject ret = new JSONObject();
String loginName = loginForm.getLoginName();
String password = loginForm.getPassword();
if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, "登录名或密码为空");
}
UserEntity user = null;
try {
user = userService.doCheckUser(loginName, password);
if (user == null) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, "用户名或密码不正确");
} else if (StringUtils.isEmpty(user.getMobile())) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, "用户无正确的手机号");
} else {
String mobile = StringUtils.trim(user.getMobile());
String sessionId = request.getSession().getId();
String ip = super.getRequestIP(request);
boolean result = validCodeService.createSmsValidCode(sessionId, ip, mobile);
if (result) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
} else {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, "验证码发送失败,请稍后在试!");
}
}
} catch (Exception e) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, "验证码发送失败:" + super.convertException(e));
} finally {
if (user == null) {
user = new UserEntity();
user.setLoginName(loginName);
}
recordSysLog(request, user, "用户获取短信验证码");
}
return ret.toJSONString();
}
} }
...@@ -7,11 +7,11 @@ ...@@ -7,11 +7,11 @@
*/ */
package com.mortals.xhx.base.system.area.dao.ibatis; package com.mortals.xhx.base.system.area.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.area.dao.AreaDao; import com.mortals.xhx.base.system.area.dao.AreaDao;
import com.mortals.xhx.base.system.area.model.AreaEntity; import com.mortals.xhx.base.system.area.model.AreaEntity;
import org.springframework.stereotype.Repository;
/** /**
* Title: 区域信息 <br/> * Title: 区域信息 <br/>
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
package com.mortals.xhx.base.system.area.model; package com.mortals.xhx.base.system.area.model;
import java.util.Date;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/** /**
* <p>Title: 区域信息</p> * <p>Title: 区域信息</p>
* <p>Description: AreaEntity </p> * <p>Description: AreaEntity </p>
......
...@@ -9,12 +9,10 @@ ...@@ -9,12 +9,10 @@
package com.mortals.xhx.base.system.area.service.impl; package com.mortals.xhx.base.system.area.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.base.system.area.dao.AreaDao; import com.mortals.xhx.base.system.area.dao.AreaDao;
import com.mortals.xhx.base.system.area.model.AreaEntity; import com.mortals.xhx.base.system.area.model.AreaEntity;
import com.mortals.xhx.base.system.area.service.AreaService; import com.mortals.xhx.base.system.area.service.AreaService;
import org.springframework.stereotype.Service;
/** /**
* <p>Title: 区域信息</p> * <p>Title: 区域信息</p>
......
...@@ -4,30 +4,28 @@ ...@@ -4,30 +4,28 @@
package com.mortals.xhx.base.system.area.web; package com.mortals.xhx.base.system.area.web;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.ap.SysConstains; import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.code.YesNo; import com.mortals.framework.common.code.YesNo;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonMappingController; import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.area.model.AreaEntity; import com.mortals.xhx.base.system.area.model.AreaEntity;
import com.mortals.xhx.base.system.area.service.AreaService; import com.mortals.xhx.base.system.area.service.AreaService;
import com.mortals.xhx.common.code.AreaLevelEnum; import com.mortals.xhx.common.code.AreaLevelEnum;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
......
...@@ -3,7 +3,6 @@ package com.mortals.xhx.base.system.idgenerator.dao.ibatis; ...@@ -3,7 +3,6 @@ package com.mortals.xhx.base.system.idgenerator.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao; import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao;
import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity; import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
package com.mortals.xhx.base.system.idgenerator.service; package com.mortals.xhx.base.system.idgenerator.service;
import java.util.List;
import com.mortals.xhx.base.system.idgenerator.service.impl.IdgeneratorServiceImpl.IdGeneratorKey; import com.mortals.xhx.base.system.idgenerator.service.impl.IdgeneratorServiceImpl.IdGeneratorKey;
import java.util.List;
/** /**
* <p>Title: id生成器</p> * <p>Title: id生成器</p>
* <p>Description: IdgeneratorService service接口 </p> * <p>Description: IdgeneratorService service接口 </p>
......
...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON; ...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao; import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao;
import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity; import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity;
import com.mortals.xhx.base.system.idgenerator.service.IdgeneratorService; import com.mortals.xhx.base.system.idgenerator.service.IdgeneratorService;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
......
...@@ -12,6 +12,8 @@ package com.mortals.xhx.base.system.menu.dao; ...@@ -12,6 +12,8 @@ package com.mortals.xhx.base.system.menu.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.menu.model.MenuEntity;
import java.util.List;
/** /**
* <p>Title: 菜单信息</p> * <p>Title: 菜单信息</p>
* <p>Description: MenuDao DAO接口 </p> * <p>Description: MenuDao DAO接口 </p>
...@@ -22,5 +24,14 @@ import com.mortals.xhx.base.system.menu.model.MenuEntity; ...@@ -22,5 +24,14 @@ import com.mortals.xhx.base.system.menu.model.MenuEntity;
*/ */
public interface MenuDao extends ICRUDDao<MenuEntity,Long> { public interface MenuDao extends ICRUDDao<MenuEntity,Long> {
List<MenuEntity> getListByUserId(Long userId);
/**
* 查询子节点
*
* @param
* @return
*/
List<MenuEntity> selectChildrenMenuById(String menuId);
} }
\ No newline at end of file
...@@ -9,11 +9,13 @@ ...@@ -9,11 +9,13 @@
package com.mortals.xhx.base.system.menu.dao.ibatis; package com.mortals.xhx.base.system.menu.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.base.system.menu.dao.MenuDao; import com.mortals.xhx.base.system.menu.dao.MenuDao;
import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.menu.model.MenuEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* <p>Title: 菜单信息</p> * <p>Title: 菜单信息</p>
* <p>Description: MenuDaoImpl DAO接口 </p> * <p>Description: MenuDaoImpl DAO接口 </p>
...@@ -25,4 +27,16 @@ import org.springframework.stereotype.Repository; ...@@ -25,4 +27,16 @@ import org.springframework.stereotype.Repository;
@Repository("menuDao") @Repository("menuDao")
public class MenuDaoImpl extends BaseCRUDDaoMybatis<MenuEntity,Long> implements MenuDao { public class MenuDaoImpl extends BaseCRUDDaoMybatis<MenuEntity,Long> implements MenuDao {
@Override
public List<MenuEntity> selectChildrenMenuById(String menuId) {
return getSqlSession().selectList(getSqlId("selectChildrenMenuById"), menuId);
}
@Override
public List<MenuEntity> getListByUserId(Long userId) {
ParamDto param = new ParamDto();
param.getCondition().put("userId", userId);
return getSqlSession().selectList(getSqlId("getListByUserId"), param);
}
} }
\ No newline at end of file
package com.mortals.xhx.base.system.menu.model;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.springframework.util.ObjectUtils;
import java.io.Serializable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 菜单信息业务前端映射树结构实体类
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class MenuTreeSelect implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 节点ID
*/
private Long id;
/**
* 父节点ID
*/
private Long parentId;
/**
* 节点名称
*/
private String label;
/**
* 菜单类型 (0.目录,1.菜单,2.按钮)
*/
private Integer menuType;
/**
* 菜单显示状态 (0.显示,1.隐藏)
*/
private Integer visible;
/**
* 权限标识,多个逗号分割
*/
private String perms;
/**
* 权限标识,多个逗号分割
*/
private String resourceUrl;
/**
* 是否隐藏(0.否,1.是)
*/
private Integer hideChildrenInMenu;
/**
* 是否选中,0为未选中,1选中。默认0
*/
private Integer checked;
/**
* 子节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<MenuTreeSelect> children;
public MenuTreeSelect() {};
public MenuTreeSelect(MenuEntity entity) {
this.id = entity.getId();
this.parentId = entity.getParentId();
this.label = entity.getName();
this.menuType = entity.getMenuType();
this.visible = entity.getVisible();
this.perms = entity.getPerms();
this.resourceUrl=entity.getResourceUrl();
this.checked=entity.getChecked();
this.hideChildrenInMenu = entity.getHideChildrenInMenu();
if(!ObjectUtils.isEmpty(entity.getChildren())){
this.children = entity.getChildren().stream().map(MenuTreeSelect::new).collect(Collectors.toList());
}
}
// 反序列化器
public class Deserializer implements ObjectDeserializer {
@Override
public MenuTreeSelect deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
MenuTreeSelect node = new MenuTreeSelect();
JSONObject jsonObject = parser.parseObject();
node.setId(jsonObject.getLong("id"));
node.setLabel(jsonObject.getString("label"));
node.setMenuType(jsonObject.getInteger("menuType"));
node.setVisible(jsonObject.getInteger("visible"));
node.setPerms(jsonObject.getString("perms"));
node.setResourceUrl(jsonObject.getString("resourceUrl"));
node.setChecked(jsonObject.getInteger("checked"));
node.setHideChildrenInMenu(jsonObject.getInteger("hideChildrenInMenu"));
JSONArray jsonArray = jsonObject.getJSONArray("children");
List<MenuTreeSelect> children = new ArrayList<>();
if(!ObjectUtils.isEmpty(jsonArray)){
for (int i = 0; i < jsonArray.size(); i++) {
MenuTreeSelect child = JSON.parseObject(jsonArray.getJSONObject(i).toJSONString(), MenuTreeSelect.class);
children.add(child);
}
}
node.setChildren(children);
return node;
}
@Override
public int getFastMatchToken() {
return JSONToken.LBRACE;
}
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.menu.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.base.system.menu.model.MenuEntity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 菜单信息业务视图对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class MenuVo extends BaseEntityLong {
/** 菜单ID,主键,自增长列表 */
private List <Long> idList;
/** 子菜单信息业务 */
private List<MenuEntity> children = new ArrayList<>();
private List<MenuEntity> childList = new ArrayList<>();
private Integer type;
/**
* 是否选中,0为未选中,1选中。默认0
*/
private Integer checked;
}
\ No newline at end of file
...@@ -10,22 +10,20 @@ package com.mortals.xhx.base.system.menu.service; ...@@ -10,22 +10,20 @@ package com.mortals.xhx.base.system.menu.service;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.menu.model.MenuEntity;
import com.mortals.xhx.base.system.menu.model.MenuTreeSelect;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
* <p>Title: 菜单信息</p> * 菜单资源类
* <p>Description: MenuService service接口 </p> * @author: zxfei
* <p>Copyright: Copyright &reg; </p> * @date: 2024/9/6 16:28
* <p>Company: </p>
* @author
* @version 1.0.0
*/ */
public interface MenuService extends ICRUDService<MenuEntity,Long> { public interface MenuService extends ICRUDService<MenuEntity,Long> {
/** /**
* 获取所有可用菜单 * 获取所有可用菜单
...@@ -33,31 +31,67 @@ public interface MenuService extends ICRUDService<MenuEntity,Long> { ...@@ -33,31 +31,67 @@ public interface MenuService extends ICRUDService<MenuEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
public List<MenuEntity> findAllEnable() throws AppException; List<MenuEntity> findAllEnable() throws AppException;
/** /**
* 查询有权限的菜单 * 查询有权限的菜单
* *
* @param user 当前用户 * @param user 当前用户
* @param urls 有权限的访问地址集合
* @return * @return
* @throws AppException * @throws AppException
*/ */
public List<MenuEntity> findTreeMenu(IUser user, Set<String> urls) throws AppException; List<MenuEntity> findTreeMenu(IUser user) throws AppException;
/**
* 更新排列顺序
* @param id
* @param type
*/
void upOrDown(Long id, Integer type);
/** /**
* 查看所有菜单 * 是否存在菜单信息业务节点
* *
* @param menuId 菜单信息业务ID
* @return 结果
*/
boolean hasChildByMenuId(Long menuId);
/**
* 构建树
* @param menuList
* @return * @return
* @throws AppException
*/ */
public List<MenuEntity> findTreeMenu() throws AppException; List<MenuEntity> buildMenuTree(List<MenuEntity> menuList);
/** /**
* 更新排列顺序 * 构建前端所需要下拉树结构
* @param id *
* @param type * @param menuList 菜单信息业务列表
* @return 下拉树结构列表
*/ */
void upOrDown(Long id, Integer type); List<MenuTreeSelect> buildMenuTreeSelect(List<MenuEntity> menuList);
/**
* 构建树,包含是否选中
* @param allMenuList
* @param menuIdsChecked
* @return
*/
List<MenuTreeSelect> buildMenuTreeChecked(List<MenuEntity> allMenuList, Set<Long> menuIdsChecked);
/**
* 根据父id查询子节点
* @param parentId
* @param context
* @return
*/
List<MenuTreeSelect> getListByParentId(Long parentId, Context context);
} }
\ No newline at end of file
...@@ -5,33 +5,25 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,33 +5,25 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.menu.model.MenuQuery;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.menu.model.MenuEntity;
import com.mortals.xhx.base.system.menu.model.MenuQuery;
import com.mortals.xhx.base.system.menu.model.MenuTreeSelect;
import com.mortals.xhx.base.system.menu.service.MenuService; import com.mortals.xhx.base.system.menu.service.MenuService;
import com.mortals.xhx.common.code.DataSatus; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.common.code.MenuAuthType; import io.swagger.annotations.ApiOperation;
import com.mortals.xhx.common.code.MenuComm; import org.springframework.web.bind.annotation.*;
import com.mortals.xhx.common.code.MenuLinkType;
import com.mortals.xhx.common.code.MenuType;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 菜单信息 * 菜单信息
* *
* @author: zxfei * @author: zxfei
* @date: 2021/11/30 10:02 * @date: 2024/9/6 16:23
*/ */
@RestController @RestController
@RequestMapping("menu") @RequestMapping("menu")
...@@ -41,29 +33,27 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic ...@@ -41,29 +33,27 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic
super.setModuleDesc("菜单信息"); super.setModuleDesc("菜单信息");
} }
@Override @Override
protected void doListBefore(MenuEntity query, Map<String, Object> model, Context context) throws AppException { protected void doListBefore(MenuEntity query, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<OrderCol>(); List<OrderCol> orderColList = new ArrayList<>();
orderColList.add(new OrderCol("parentId"));
orderColList.add(new OrderCol("orderId")); orderColList.add(new OrderCol("orderId"));
query.setOrderColList(orderColList); query.setOrderColList(orderColList);
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
Map<String, Object> status = new HashMap<String, Object>(); this.addDict(model, "linkType", LinkTypeEnum.getEnumMap());
status.put("status", DataSatus.getEnumMap(DataSatus.CLOSE.getValue(), DataSatus.DELETE.getValue(), DataSatus.OVERDUE.getValue(), DataSatus.USEOUT.getValue())); this.addDict(model, "commMenu", CommMenuEnum.getEnumMap());
status.put("linkType", MenuLinkType.getEnumMap()); this.addDict(model, "menuType", MenuTypeEnum.getEnumMap());
status.put("commMenu", MenuComm.getEnumMap()); this.addDict(model, "authType", AuthTypeEnum.getEnumMap());
status.put("menuType", MenuType.getEnumMap()); this.addDict(model, "visible", VisibleEnum.getEnumMap());
status.put("authType", MenuAuthType.getEnumMap()); this.addDict(model, "status", StatusEnum.getEnumMap());
model.put(KEY_RESULT_DICT, status);
} }
/** /**
* 改变状态 * 改变状态
*/ */
@ApiOperation(value = "改变状态", notes = "改变状态")
@RequestMapping(value = "change/status") @RequestMapping(value = "change/status")
public String changeStatus(@RequestBody MenuEntity query) { public String changeStatus(@RequestBody MenuEntity query) {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
...@@ -97,6 +87,7 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic ...@@ -97,6 +87,7 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic
/** /**
* 更换排序 * 更换排序
*/ */
@ApiOperation(value = "更换排序")
@PostMapping(value = "upOrDown") @PostMapping(value = "upOrDown")
public String upOrDownTopicList(@RequestBody MenuEntity query) { public String upOrDownTopicList(@RequestBody MenuEntity query) {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
...@@ -110,4 +101,54 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic ...@@ -110,4 +101,54 @@ public class MenuController extends BaseCRUDJsonBodyMappingController<MenuServic
} }
return ret.toJSONString(); return ret.toJSONString();
} }
/**
* 获取站点下拉树列表
*/
@ApiOperation(value = "菜单树列表")
@PostMapping("treeselect")
public String treeselect() {
Map<String, Object> model = new HashMap<>();
JSONObject ret = new JSONObject();
String busiDesc = "查询" + this.getModuleDesc();
int code = VALUE_RESULT_SUCCESS;
try {
List<MenuEntity> list = this.service.find(new MenuQuery());
List<MenuTreeSelect> treeSelects = this.service.buildMenuTreeSelect(list);
model.put("result", treeSelects);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
code = VALUE_RESULT_FAILURE;
this.doException(request, busiDesc, model, e);
}
ret.put(KEY_RESULT_DATA, model);
ret.put(KEY_RESULT_CODE, code);
return ret.toJSONString();
}
/**
* 根据parentId查询子信息
*/
@ApiOperation(value = "根据parentId查询子信息")
@GetMapping(value = "getListByParentId")
public String getListByParentId(Long parentId) {
JSONObject ret = new JSONObject();
Map<String, Object> model = new HashMap<>();
String busiDesc = "查询" + this.getModuleDesc() + "子节点";
try {
List<MenuTreeSelect> treeList = this.service.getListByParentId(parentId, getContext());
model.put(KEY_RESULT_DATA, treeList);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_DATA, model);
recordSysLog(request, busiDesc + "【成功】");
} catch (Exception e) {
log.error("根据parentId查询子信息错误", e);
this.doException(request, busiDesc, model, e);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, e.getMessage());
}
return ret.toJSONString();
}
} }
\ No newline at end of file
...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.oper.dao.ibatis; ...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.oper.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.oper.dao.OperLogDao; import com.mortals.xhx.base.system.oper.dao.OperLogDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity; import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
package com.mortals.xhx.base.system.oper.model; package com.mortals.xhx.base.system.oper.model;
import java.util.Date;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/** /**
* <p>Title: 操作日志</p> * <p>Title: 操作日志</p>
* <p>Description: OperLogEntity </p> * <p>Description: OperLogEntity </p>
......
...@@ -21,7 +21,6 @@ import com.mortals.xhx.base.system.oper.dao.OperLogDao; ...@@ -21,7 +21,6 @@ import com.mortals.xhx.base.system.oper.dao.OperLogDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity; import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.base.system.oper.service.OperLogService; import com.mortals.xhx.base.system.oper.service.OperLogService;
import com.mortals.xhx.common.code.OperTypeEnum; import com.mortals.xhx.common.code.OperTypeEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -104,15 +103,12 @@ public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperL ...@@ -104,15 +103,12 @@ public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperL
OperLogEntity operLogEntity = new OperLogEntity(); OperLogEntity operLogEntity = new OperLogEntity();
operLogEntity.setIp(ip); operLogEntity.setIp(ip);
operLogEntity.setLogDate(new Date()); operLogEntity.setLogDate(new Date());
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK)==null?"unknow":GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
//operLogEntity.setOperType(operType.getValue());
operLogEntity.setRequestUrl(requestUrl); operLogEntity.setRequestUrl(requestUrl);
operLogEntity.setLoginName(loginName); operLogEntity.setLoginName(loginName);
operLogEntity.setUserId(userId); operLogEntity.setUserId(userId);
operLogEntity.setUserName(userName); operLogEntity.setUserName(userName);
operLogEntity.setContent(content); operLogEntity.setContent(content);
save(operLogEntity, null); save(operLogEntity, null);
} }
private void formatterLogContent(OperLogEntity operLogEntity, String content, String id, OperTypeEnum operType) { private void formatterLogContent(OperLogEntity operLogEntity, String content, String id, OperTypeEnum operType) {
...@@ -153,4 +149,5 @@ public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperL ...@@ -153,4 +149,5 @@ public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperL
} }
operLogEntity.setContent(content.toString()); operLogEntity.setContent(content.toString());
} }
} }
\ No newline at end of file
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
package com.mortals.xhx.base.system.oper.web; package com.mortals.xhx.base.system.oper.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
...@@ -16,15 +15,9 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; ...@@ -16,15 +15,9 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.oper.model.OperLogEntity; import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.base.system.oper.service.OperLogService; import com.mortals.xhx.base.system.oper.service.OperLogService;
import com.mortals.xhx.common.code.OperTypeEnum; import com.mortals.xhx.common.code.OperTypeEnum;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -43,7 +36,6 @@ import java.util.Map; ...@@ -43,7 +36,6 @@ import java.util.Map;
public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLogService, OperLogEntity, Long> { public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLogService, OperLogEntity, Long> {
public OperLogController() { public OperLogController() {
super.setFormClass(OperLogForm.class);
super.setModuleDesc("操作日志"); super.setModuleDesc("操作日志");
} }
......
package com.mortals.xhx.base.system.param.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import java.util.List;
/**
* 参数信息业务视图对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class ParamVo extends BaseEntityLong {
/** 序号,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.base.system.param.service.impl; package com.mortals.xhx.base.system.param.service.impl;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.IParam; import com.mortals.framework.service.IParam;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
...@@ -32,6 +34,16 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par ...@@ -32,6 +34,16 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par
return "ParamEntity.paramKey"; return "ParamEntity.paramKey";
} }
@Override
protected void saveBefore(ParamEntity entity, Context context) throws AppException {
//过滤换行符
entity.setParamKey(StrUtil.removeAllLineBreaks(entity.getParamKey()));
entity.setParamValue(StrUtil.removeAllLineBreaks(entity.getParamValue()));
super.saveBefore(entity, context);
}
@Override @Override
public String getValueByKey(String key) { public String getValueByKey(String key) {
List<ParamEntity> list = this.getCacheList(); List<ParamEntity> list = this.getCacheList();
......
...@@ -3,7 +3,6 @@ package com.mortals.xhx.base.system.param.web; ...@@ -3,7 +3,6 @@ package com.mortals.xhx.base.system.param.web;
import com.mortals.framework.common.code.PageDisplayType; import com.mortals.framework.common.code.PageDisplayType;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.util.FileUtil;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.model.ParamEntity; import com.mortals.xhx.base.system.param.model.ParamEntity;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
...@@ -26,7 +25,6 @@ import java.util.Map; ...@@ -26,7 +25,6 @@ import java.util.Map;
public class ParamController extends BaseCRUDJsonBodyMappingController<ParamService, ParamEntity, Long> { public class ParamController extends BaseCRUDJsonBodyMappingController<ParamService, ParamEntity, Long> {
public ParamController() { public ParamController() {
super.setFormClass(ParamForm.class);
super.setModuleDesc("参数信息"); super.setModuleDesc("参数信息");
} }
...@@ -50,8 +48,4 @@ public class ParamController extends BaseCRUDJsonBodyMappingController<ParamServ ...@@ -50,8 +48,4 @@ public class ParamController extends BaseCRUDJsonBodyMappingController<ParamServ
return result; return result;
} }
public static void main(String[] args) {
FileUtil.delete("E:\\pic\\1.png");
}
} }
\ No newline at end of file
...@@ -24,7 +24,6 @@ import java.util.List; ...@@ -24,7 +24,6 @@ import java.util.List;
*/ */
public interface ResourceDao extends ICRUDDao<ResourceEntity,Long> { public interface ResourceDao extends ICRUDDao<ResourceEntity,Long> {
public List<ResourceEntity> getListByUserId(Long userId); List<ResourceEntity> getListByUserId(Long userId);
List<ResourceEntity> getAll(int userType);
} }
\ No newline at end of file
...@@ -8,10 +8,8 @@ import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; ...@@ -8,10 +8,8 @@ import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.framework.model.ParamDto; import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.base.system.resource.dao.ResourceDao; import com.mortals.xhx.base.system.resource.dao.ResourceDao;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
...@@ -40,14 +38,5 @@ public class ResourceDaoImpl extends BaseCRUDDaoMybatis<ResourceEntity, Long> im ...@@ -40,14 +38,5 @@ public class ResourceDaoImpl extends BaseCRUDDaoMybatis<ResourceEntity, Long> im
return getSqlSession().selectList(getSqlId("getListByUserId"), param); return getSqlSession().selectList(getSqlId("getListByUserId"), param);
} }
@Override
public List<ResourceEntity> getAll(final int userType) {
return getSqlSession().selectList(getSqlId("getAllByUserType"), new HashMap<String, Object>() {
{
put("userType", userType);
}
});
}
} }
\ No newline at end of file
package com.mortals.xhx.base.system.resource.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import java.util.List;
/**
* 资源信息业务视图对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class ResourceVo extends BaseEntityLong {
/** 菜单ID,主键,自增长列表 */
private List <Long> idList;
private Integer checked=0;
private Long roleId;
}
\ No newline at end of file
...@@ -16,6 +16,7 @@ import com.mortals.framework.service.ICRUDService; ...@@ -16,6 +16,7 @@ import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
/** /**
...@@ -28,12 +29,6 @@ import java.util.Set; ...@@ -28,12 +29,6 @@ import java.util.Set;
*/ */
public interface ResourceService extends ICRUDService<ResourceEntity,Long> { public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
/**
* 查询所有可用资源
* @return
* @throws AppException
*/
List<ResourceEntity> findAllEnable() throws AppException;
/** /**
* 根据用户查询可用资源 * 根据用户查询可用资源
...@@ -43,13 +38,6 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -43,13 +38,6 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
*/ */
List<ResourceEntity> findListByUserId(Long userId) throws AppException; List<ResourceEntity> findListByUserId(Long userId) throws AppException;
/**
* 查询用户可用资源
* @param userId
* @return 字符串,多个以逗号分隔
* @throws AppException
*/
String findUrlByUserId(Long userId) throws AppException;
/** /**
* 查询用户用资源集合 * 查询用户用资源集合
...@@ -59,14 +47,11 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -59,14 +47,11 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
*/ */
Set<String> findUrlSetByUserId(Long userId) throws AppException; Set<String> findUrlSetByUserId(Long userId) throws AppException;
/**
* 获取所有资源,不分页
* @return
* @param userType
*/
List<ResourceEntity> findAll(int userType);
Rest<String> refreshResourceUrl(String packageName, Context context); Rest<String> refreshResourceUrl(String packageName, Context context);
Map<String, List<ResourceEntity>> group(Long roleId, Context context);
} }
\ No newline at end of file
...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; ...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.role.dao.RoleAuthDao; import com.mortals.xhx.base.system.role.dao.RoleAuthDao;
import com.mortals.xhx.base.system.role.model.RoleAuthEntity; import com.mortals.xhx.base.system.role.model.RoleAuthEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; ...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.role.dao.RoleDao; import com.mortals.xhx.base.system.role.dao.RoleDao;
import com.mortals.xhx.base.system.role.model.RoleEntity; import com.mortals.xhx.base.system.role.model.RoleEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; ...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.role.dao.RoleUserDao; import com.mortals.xhx.base.system.role.dao.RoleUserDao;
import com.mortals.xhx.base.system.role.model.RoleUserEntity; import com.mortals.xhx.base.system.role.model.RoleUserEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
package com.mortals.xhx.base.system.role.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import java.util.List;
/**
* 角色资源权限业务视图对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class RoleAuthVo extends BaseEntityLong {
/** 序号,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.base.system.role.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import java.util.List;
/**
* 角色用户业务视图对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class RoleUserVo extends BaseEntityLong {
/** 序号,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.table.dao.ibatis; ...@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.table.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.table.dao.TableIndexDao; import com.mortals.xhx.base.system.table.dao.TableIndexDao;
import com.mortals.xhx.base.system.table.model.TableIndexEntity; import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment