Commit 2de852e5 authored by 赵啸非's avatar 赵啸非

修改菜单权限模块

parent c7b41b86
......@@ -381,3 +381,138 @@ INSERT INTO `mortals_sys_area` VALUES (null, ',gde17ba11bbf48568547c21b174c8a32'
INSERT INTO `mortals_sys_area` VALUES (null, ',gde17ba11bbf48568547c21b174c8a32', '福善镇', 'abe17ba11bbf48568547c21b174c8a32', 'gde17ba11bbf48568547c21b174c8a32', 'True', 'True', 'false', 'false', '511715282000', 4, '福善镇', 'dzsgxjscyy.sczwfw.gov.cn', 1, '2025-03-20 10:20:10', NULL, '2025-03-20 10:20:10');
INSERT INTO `mortals_sys_area` VALUES (null, ',gde17ba11bbf48568547c21b174c8a32', '安仁乡', 'abf17ba11bbf48568547c21b174c8a32', 'gde17ba11bbf48568547c21b174c8a32', 'True', 'True', 'false', 'false', '511715414000', 4, '安仁乡', 'dzsgxjscyy.sczwfw.gov.cn', 1, '2025-03-20 10:20:10', NULL, '2025-03-20 10:20:10');
-- ----------------------------
-- 角色权限改造 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 '激活目录',
`resourceUrl` varchar(512) 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
......@@ -246,6 +246,10 @@
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<!-- Spring Boot Data Elasticsearch依赖 -->
......
......@@ -3,7 +3,6 @@ package com.mortals.xhx.base.system.idgenerator.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao;
import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity;
import org.springframework.stereotype.Repository;
/**
......
package com.mortals.xhx.base.system.idgenerator.service;
import java.util.List;
import com.mortals.xhx.base.system.idgenerator.service.impl.IdgeneratorServiceImpl.IdGeneratorKey;
import java.util.List;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorService service接口 </p>
......
package com.mortals.xhx.base.system.idgenerator.service.impl;
import cn.hutool.Hutool;
import com.alibaba.fastjson.JSON;
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.service.IdgeneratorService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
......@@ -69,8 +67,6 @@ public class IdgeneratorServiceImpl implements IdgeneratorService {
private final Class[] factorsClazz;
private IdGeneratorKey(Long step, String methodName, Class[] factorsClazz) {
this.step = step;
this.methodName = methodName;
this.factorsClazz = factorsClazz;
......
......@@ -12,6 +12,8 @@ package com.mortals.xhx.base.system.menu.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.menu.model.MenuEntity;
import java.util.List;
/**
* <p>Title: 菜单信息</p>
* <p>Description: MenuDao DAO接口 </p>
......@@ -22,5 +24,14 @@ import com.mortals.xhx.base.system.menu.model.MenuEntity;
*/
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 @@
package com.mortals.xhx.base.system.menu.dao.ibatis;
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.model.MenuEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>Title: 菜单信息</p>
* <p>Description: MenuDaoImpl DAO接口 </p>
......@@ -25,4 +27,16 @@ import org.springframework.stereotype.Repository;
@Repository("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;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser;
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.Set;
/**
* <p>Title: 菜单信息</p>
* <p>Description: MenuService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
* 菜单资源类
* @author: zxfei
* @date: 2024/9/6 16:28
*/
public interface MenuService extends ICRUDService<MenuEntity,Long> {
/**
* 获取所有可用菜单
......@@ -33,31 +31,67 @@ public interface MenuService extends ICRUDService<MenuEntity,Long> {
* @return
* @throws AppException
*/
public List<MenuEntity> findAllEnable() throws AppException;
List<MenuEntity> findAllEnable() throws AppException;
/**
* 查询有权限的菜单
*
* @param user 当前用户
* @param urls 有权限的访问地址集合
* @return
* @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
* @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,86 +5,72 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
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.common.code.DataSatus;
import com.mortals.xhx.common.code.MenuAuthType;
import com.mortals.xhx.common.code.MenuComm;
import com.mortals.xhx.common.code.MenuLinkType;
import com.mortals.xhx.common.code.MenuType;
import com.mortals.xhx.common.code.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 菜单信息
*
* @author: zxfei
* @date: 2021/11/30 10:02
* @date: 2024/9/6 16:23
*/
@RestController
@RequestMapping("menu")
public class MenuController extends BaseCRUDJsonMappingController<MenuService, MenuForm,MenuEntity,Long> {
public class MenuController extends BaseCRUDJsonBodyMappingController<MenuService, MenuEntity, Long> {
public MenuController(){
super.setFormClass(MenuForm.class);
public MenuController() {
super.setModuleDesc("菜单信息");
}
@Override
protected void doListBefore(HttpServletRequest request, HttpServletResponse response, MenuForm form, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<OrderCol>();
orderColList.add(new OrderCol("parentId"));
protected void doListBefore(MenuEntity query, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<>();
orderColList.add(new OrderCol("orderId"));
form.getQuery().setOrderColList(orderColList);
query.setOrderColList(orderColList);
}
@Override
protected void init(HttpServletRequest request, HttpServletResponse response, MenuForm form, Map<String, Object> model,
Context context) {
Map<String, Object> status = new HashMap<String, Object>();
status.put("status", DataSatus.getEnumMap(DataSatus.CLOSE.getValue(), DataSatus.DELETE.getValue(), DataSatus.OVERDUE.getValue(), DataSatus.USEOUT.getValue()));
status.put("linkType", MenuLinkType.getEnumMap());
status.put("commMenu", MenuComm.getEnumMap());
status.put("menuType", MenuType.getEnumMap());
status.put("authType", MenuAuthType.getEnumMap());
model.put(KEY_RESULT_DICT, status);
super.init(request, response, form, model, context);
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "linkType", LinkTypeEnum.getEnumMap());
this.addDict(model, "commMenu", CommMenuEnum.getEnumMap());
this.addDict(model, "menuType", MenuTypeEnum.getEnumMap());
this.addDict(model, "authType", AuthTypeEnum.getEnumMap());
this.addDict(model, "visible", VisibleEnum.getEnumMap());
this.addDict(model, "status", StatusEnum.getEnumMap());
}
/**
* 改变状态
*/
@ApiOperation(value = "改变状态", notes = "改变状态")
@RequestMapping(value = "change/status")
public String changeStatus(HttpServletRequest request, HttpServletResponse response, MenuForm form) {
public String changeStatus(@RequestBody MenuEntity query) {
JSONObject ret = new JSONObject();
Context context = getContext();
try {
MenuEntity entity = this.service.get(form.getEntity().getId(), context);//.doSubmitAudit(form.getEntity(), context);
MenuEntity entity = this.service.get(query.getId(), context);//.doSubmitAudit(form.getEntity(), context);
if (null == entity) {
throw new AppException("菜单不存在!");
}
if (null == form.getEntity().getStatus()) {
if (null == entity.getStatus()) {
throw new AppException("菜单状态不能为空!");
}
if (form.getEntity().getStatus() != DataSatus.ENABLE.getValue() && form.getEntity().getStatus() != DataSatus.DISENABLE.getValue()) {
if (entity.getStatus() != DataSatus.ENABLE.getValue() && entity.getStatus() != DataSatus.DISENABLE.getValue()) {
throw new AppException("非法菜单状态!");
}
String busiDesc = DataSatus.getByValue(form.getEntity().getStatus()).getDesc();
entity.setStatus(form.getEntity().getStatus());
String busiDesc = DataSatus.getByValue(entity.getStatus()).getDesc();
entity.setStatus(entity.getStatus());
this.service.update(entity, context);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, busiDesc + "成功");
......@@ -101,12 +87,13 @@ public class MenuController extends BaseCRUDJsonMappingController<MenuService, M
/**
* 更换排序
*/
@ApiOperation(value = "更换排序")
@PostMapping(value = "upOrDown")
public String upOrDownTopicList(@RequestParam(value = "id") Long id, @RequestParam(value = "type") Integer type) {
public String upOrDownTopicList(@RequestBody MenuEntity query) {
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
try {
this.service.upOrDown(id,type);
this.service.upOrDown(query.getId(), query.getType());
} catch (Exception e) {
log.error("更新错误", e);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
......@@ -114,4 +101,54 @@ public class MenuController extends BaseCRUDJsonMappingController<MenuService, M
}
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;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.oper.dao.OperLogDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import org.springframework.stereotype.Repository;
/**
......
......@@ -8,10 +8,10 @@
package com.mortals.xhx.base.system.oper.model;
import java.util.Date;
import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogEntity </p>
......
......@@ -77,5 +77,4 @@ public interface OperLogService extends ICRUDService<OperLogEntity,Long> {
void insertOperLog(String ip, String requestUrl, Long userId, String userName, String loginName, String content);
}
\ No newline at end of file
......@@ -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.service.OperLogService;
import com.mortals.xhx.common.code.OperTypeEnum;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
......@@ -104,19 +103,13 @@ public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperL
OperLogEntity operLogEntity = new OperLogEntity();
operLogEntity.setIp(ip);
operLogEntity.setLogDate(new Date());
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
//operLogEntity.setOperType(operType.getValue());
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK)==null?"unknow":GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
operLogEntity.setRequestUrl(requestUrl);
operLogEntity.setLoginName(loginName);
operLogEntity.setUserId(userId);
operLogEntity.setUserName(userName);
operLogEntity.setContent(content);
save(operLogEntity, null);
}
private void formatterLogContent(OperLogEntity operLogEntity, String content, String id, OperTypeEnum operType) {
if (operType == OperTypeEnum.SAVE) {
......
/**
* 文件:OperLogController.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.web;
......@@ -20,22 +27,19 @@ import java.util.Map;
* <p>Description: OperLogController </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
@RestController
@RequestMapping("oper/log")
public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLogService,OperLogEntity,Long> {
public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLogService, OperLogEntity, Long> {
public OperLogController(){
super.setFormClass(OperLogForm.class);
public OperLogController() {
super.setModuleDesc("操作日志");
}
/**
* @param model
* @param context
*/
@Override
protected void init(Map<String, Object> model, Context context) {
Map<String, Object> status = new HashMap<String, Object>(1);
......@@ -43,18 +47,10 @@ public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLog
status.put("operType", OperTypeEnum.getEnumMap());
model.put(KEY_RESULT_DICT, status);
super.init(model, context);
}
/**
* @param query
* @param model
* @param context
* @throws AppException
*/
@Override
protected void doListBefore(OperLogEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
query.setOrderColList(new ArrayList<OrderCol>() {
{
add(new OrderCol("a.logDate", "desc"));
......@@ -62,5 +58,4 @@ public class OperLogController extends BaseCRUDJsonBodyMappingController<OperLog
});
}
}
\ No newline at end of file
......@@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.param.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.param.dao.ParamDao;
import com.mortals.xhx.base.system.param.model.ParamEntity;
import org.springframework.stereotype.Repository;
/**
......
/**
* 文件:ParamEntity.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.param.model;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IParam;
import java.util.Date;
import com.mortals.xhx.base.system.param.model.vo.ParamVo;
import lombok.Data;
/**
* <p>Title: 参数信息</p>
* <p>Description: ParamEntity </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class ParamEntity extends BaseEntityLong implements IParam {
private static final long serialVersionUID = 1536307966363L;
/** 参数名称 */
private String name;
/** 一级组织,如:平台配置 */
private String firstOrganize;
/** 二级组织,如:基础配置 */
private String secondOrganize;
/** 参数键,全局唯一 */
private String paramKey;
/** 参数值 */
private String paramValue;
/** 参数有效状态,0:禁用,1:启用,默认1 */
private Integer validStatus;
/** 参数修改状态,0:隐藏,1:页面仅查看,2:页面可修改,3:页面可删除,4:页面可修改删除,默认4 */
private Integer modStatus;
/** 展现类型,0:普通文本框,1:多行文本框,2:开关,3:块输入框,4:密码输入框,默认:0 */
private Integer displayType;
/** 备注 */
private String remark;
/** 创建时间 */
private Date createTime;
/** 创建用户ID */
private Long createUserId;
/** 创建用户名称 */
private String createUserName;
public ParamEntity(){
}
/**
* 获取 参数名称
* @return name
*/
public String getName(){
return this.name;
}
/**
* 设置 参数名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 一级组织,如:平台配置
* @return firstOrganize
*/
public String getFirstOrganize(){
return this.firstOrganize;
}
/**
* 设置 一级组织,如:平台配置
* @param firstOrganize
*/
public void setFirstOrganize(String firstOrganize){
this.firstOrganize = firstOrganize;
}
/**
* 获取 二级组织,如:基础配置
* @return secondOrganize
*/
public String getSecondOrganize(){
return this.secondOrganize;
}
/**
* 设置 二级组织,如:基础配置
* @param secondOrganize
*/
public void setSecondOrganize(String secondOrganize){
this.secondOrganize = secondOrganize;
}
/**
* 获取 参数键,全局唯一
* @return paramKey
*/
public String getParamKey(){
return this.paramKey;
}
/**
* 设置 参数键,全局唯一
* @param paramKey
*/
public void setParamKey(String paramKey){
this.paramKey = paramKey;
}
/**
* 获取 参数值
* @return paramValue
*/
public String getParamValue(){
return this.paramValue;
}
/**
* 设置 参数值
* @param paramValue
*/
public void setParamValue(String paramValue){
this.paramValue = paramValue;
}
/**
* 获取 参数有效状态,0:禁用,1:启用,默认1
* @return validStatus
*/
public Integer getValidStatus(){
return this.validStatus;
}
/**
* 设置 参数有效状态,0:禁用,1:启用,默认1
* @param validStatus
*/
public void setValidStatus(Integer validStatus){
this.validStatus = validStatus;
}
/**
* 获取 参数修改状态,0:隐藏,1:页面仅查看,2:页面可修改,3:页面可删除,4:页面可修改删除,默认4
* @return modStatus
*/
public Integer getModStatus(){
return this.modStatus;
}
* 参数信息业务实体对象
*
* @author zxfei
* @date 2024-09-06
*/
@Data
public class ParamEntity extends ParamVo implements IParam {
private static final long serialVersionUID = 1L;
/**
* 设置 参数修改状态,0:隐藏,1:页面仅查看,2:页面可修改,3:页面可删除,4:页面可修改删除,默认4
* @param modStatus
* 参数名称
*/
public void setModStatus(Integer modStatus){
this.modStatus = modStatus;
}
private String name;
/**
* 获取 展现类型,0:普通文本框,1:多行文本框,2:开关,3:块输入框,4:密码输入框,默认:0
* @return displayType
* 一级组织,如:平台配置
*/
public Integer getDisplayType(){
return this.displayType;
}
private String firstOrganize;
/**
* 设置 展现类型,0:普通文本框,1:多行文本框,2:开关,3:块输入框,4:密码输入框,默认:0
* @param displayType
* 二级组织,如:基础配置
*/
public void setDisplayType(Integer displayType){
this.displayType = displayType;
}
private String secondOrganize;
/**
* 获取 备注
* @return remark
* 参数键,全局唯一
*/
public String getRemark(){
return this.remark;
}
private String paramKey;
/**
* 设置 备注
* @param remark
* 参数值
*/
public void setRemark(String remark){
this.remark = remark;
}
private String paramValue;
/**
* 获取 创建时间
* @return createTime
* 参数有效状态(0.禁用,1.启用)
*/
public Date getCreateTime(){
return this.createTime;
}
private Integer validStatus;
/**
* 设置 创建时间
* @param createTime
* 参数修改状态,(0.隐藏,1.页面仅查看,2.页面可修改,3.页面可删除,4.页面可修改删除)
*/
public void setCreateTime(Date createTime){
this.createTime = createTime;
}
private Integer modStatus;
/**
* 获取 创建用户ID
* @return createUserId
* 展现类型 (0.普通文本框,1.多行文本框,2.开关,3.块输入框)
*/
public Long getCreateUserId(){
return this.createUserId;
}
private Integer displayType;
/**
* 设置 创建用户ID
* @param createUserId
* 备注
*/
public void setCreateUserId(Long createUserId){
this.createUserId = createUserId;
}
private String remark;
/**
* 获取 创建用户名称
* @return createUserName
* 创建用户名称
*/
public String getCreateUserName(){
return this.createUserName;
}
private String createUserName;
/**
* 设置 创建用户名称
* @param createUserName
* 创建用户名称
*/
public void setCreateUserName(String createUserName){
this.createUserName = createUserName;
}
private String updateUserName;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj == null) return false;
if (obj instanceof ParamEntity) {
ParamEntity tmp = (ParamEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append("id:").append(getId())
.append(",name:").append(getName())
.append(",firstOrganize:").append(getFirstOrganize())
.append(",secondOrganize:").append(getSecondOrganize())
.append(",paramKey:").append(getParamKey())
.append(",paramValue:").append(getParamValue())
.append(",validStatus:").append(getValidStatus())
.append(",modStatus:").append(getModStatus())
.append(",displayType:").append(getDisplayType())
.append(",remark:").append(getRemark())
.append(",createTime:").append(getCreateTime())
.append(",createUserId:").append(getCreateUserId())
.append(",createUserName:").append(getCreateUserName());
return sb.toString();
}
public void initAttrValue(){
this.name = null;
this.firstOrganize = null;
this.secondOrganize = null;
this.paramKey = null;
this.paramValue = null;
this.name = "";
this.firstOrganize = "";
this.secondOrganize = "";
this.paramKey = "";
this.paramValue = "";
this.validStatus = 1;
this.modStatus = 4;
this.displayType = 0;
this.remark = null;
this.createTime = null;
this.createUserId = null;
this.createUserName = null;
this.remark = "";
this.createUserName = "";
this.updateUserName = "";
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.param.model;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
@Data
public class ParamEntityExt extends BaseEntityLong {
/** 素材分组名称 */
private String pictureGroupName;
}
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
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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