pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java
@@ -6,23 +6,16 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.*; import com.dy.common.po.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.NotEmpty; import lombok.*; import org.hibernate.validator.constraints.Length; import java.util.Date; import java.util.List; /** * 用户 */ //2024-04-12下面TableName不用配置表名称(value="BaUser"或“ba_user”) //只要通过驼峰命名法则类名与表名对应起来就可以了,如果不能对应起来,需要指定表名称 //例如@TableName(value="TestUser" autoResultMap = true) @TableName(value="ba_role", autoResultMap = true) @Data @Builder @@ -65,9 +58,16 @@ public Boolean deleted; /** * 创建时间 */ @TableField(value = "create_dt", fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") public Date createDt; /** * 前端web界面提交的角色所属权限的id,其是一个字符串数组 */ @TableField(exist = false) public List<String> priIds ; public List<Integer> priIds ; } pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml
@@ -8,6 +8,7 @@ <result column="name" property="name" /> <result column="disabled" property="disabled" /> <result column="deleted" property="deleted" /> <result column="create_dt" property="createDt" /> </resultMap> <resultMap id="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaRole"> <result column="id" property="id" /> @@ -15,17 +16,17 @@ </resultMap> <resultMap id="someResultMap" extends="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaRole"> <collection property="priIds" ofType="java.lang.String" fetchType="eager" column="{roleId=id}" select="com.dy.pmsGlobal.daoBa.BaPrivilegeMapper.selectPrivilegeByRoleId" /> <collection property="priIds" ofType="java.lang.Integer" fetchType="eager" column="{roleId=id}" select="com.dy.pmsGlobal.daoBa.BaPrivilegeMapper.selectPrivilegeByRoleId" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> id, `name`, disabled, deleted id, `name`, disabled, deleted,create_dt </sql> <sql id="Part_Column_List"> <!--@mbg.generated--> id, `name`, disabled id, `name`, disabled,create_dt </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="someResultMap"> pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml
@@ -11,6 +11,7 @@ <result column="supper_admin" property="supperAdmin" /> <result column="disabled" property="disabled" typeHandler="com.dy.common.mybatis.BooleanTypeHandler" /> <result column="deleted" property="deleted" typeHandler="com.dy.common.mybatis.BooleanTypeHandler" /> <result column="create_dt" property="createDt" /> </resultMap> <resultMap id="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaUser"> <!--@mbg.generated--> pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java
New file @@ -0,0 +1,45 @@ package com.dy.pmsBase.config; //import com.dy.common.webFilter.DevOfDataSourceNameSetFilter; import com.dy.common.webFilter.UserTokenFilter; import jakarta.servlet.Filter; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WebFilterConfiguration { @Value("${pms.global.dev}") public String isDevStage ;//是否为开发阶段 // @Value("${pipIrr.global.dsName}") // public String dsName ;//开发阶段的数据源名称 /** * DevOfDataSourceNameSetFilter与UserTokenFilter只能一个被配置上, * 所以他们的order都是1 */ private static final int order_UserTokenFilter = 1 ;//与下面 private static final int order_DevOfDataSourceNameSetFilter = 1 ; @Bean public FilterRegistrationBean<? extends Filter> RegFilter() { FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>(); if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){ // filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter()); // filterRegistrationBean.addUrlPatterns("/*");//配置过滤规则 // filterRegistrationBean.addInitParameter("dataSourceName",dsName);//设置init参数 // filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//设置过滤器名称 // filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//执行次序 }else{ filterRegistrationBean.setFilter(new UserTokenFilter()); filterRegistrationBean.addUrlPatterns("/*");//配置过滤规则 filterRegistrationBean.setName("UserTokenFilter");//设置过滤器名称 filterRegistrationBean.setOrder(order_UserTokenFilter);//执行次序 } return filterRegistrationBean; } } pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java
New file @@ -0,0 +1,62 @@ package com.dy.pmsBase.config; import com.dy.common.webListener.GenerateIdSetSuffixListener; import jakarta.servlet.ServletContextListener; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WebListenerConfiguration { /** * 启动顺序 */ //private static final int order_config = 0 ; private static final int order_idSetSuffix = 1 ; //private static final int order_init = 2 ; /* * 解析各种***.config配置的ConfigListener,暂时不采用此种配置方式 * @Bean public ConfigListener getGlConfigListener(){ return new ConfigListener() ; } /** * 外部提供Listener * @param listener 外部提供Listener * @return 注册Bean @Bean public ServletListenerRegistrationBean<? extends ServletContextListener> regConfigListener(ConfigListener listener) { ServletListenerRegistrationBean<ConfigListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>(); listenerRegistrationBean.setListener(listener); listenerRegistrationBean.setOrder(order_config); return listenerRegistrationBean; } */ /** * 内部提供listener,该listener在系统启动时,根据配置 设置ID产生器的后缀 * @return 注册Bean */ @Bean public ServletListenerRegistrationBean<? extends ServletContextListener> regSsoListener() { ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>(); listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener()); listenerRegistrationBean.setOrder(order_idSetSuffix); return listenerRegistrationBean; } // /** // * 内部提供listener,该listener在系统启动时,初始化数据库数据 // * @return 注册Bean // */ // @Bean // public ServletListenerRegistrationBean<? extends ServletContextListener> regInitListener() { // ServletListenerRegistrationBean<InitListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>(); // listenerRegistrationBean.setListener(new InitListener()); // listenerRegistrationBean.setOrder(order_init); // return listenerRegistrationBean; // } } pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java
New file @@ -0,0 +1,14 @@ package com.dy.pmsBase.role; import com.dy.common.webUtil.QueryConditionVo; import lombok.*; @Data @EqualsAndHashCode(callSuper = false) @ToString(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Builder public class QueryVo extends QueryConditionVo { public String name; } pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java
New file @@ -0,0 +1,119 @@ package com.dy.pmsBase.role; import com.alibaba.fastjson2.JSON; import com.dy.common.aop.SsoPowerAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsGlobal.pojoBa.BaRole; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 角色管理 */ @Slf4j @RestController @RequestMapping(path="role") @SuppressWarnings("unchecked") public class RoleCtrl { private RoleSv roleSv; @Autowired public RoleCtrl(RoleSv roleSv){ this.roleSv = roleSv; } /** * 保存角色信息 * @param role * @param bindingResult * @return */ @PostMapping(path="save") @SsoPowerAop(power = "10100011") public BaseResponse<BaRole> save(@RequestBody @Valid BaRole role,BindingResult bindingResult){ try { role.setDeleted(false); role.setDisabled(false); return BaseResponseUtils.buildSuccess(roleSv.save(role)); }catch (Exception e){ log.error("保存角色异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 更新角色信息 * @param role * @param bindingResult * @return */ @PostMapping(path="update") @SsoPowerAop(power = "10100011") public BaseResponse<BaRole> update(@RequestBody @Valid BaRole role,BindingResult bindingResult){ try { return BaseResponseUtils.buildSuccess(roleSv.update(role)); }catch (Exception e){ log.error("更新角色异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 删除角色信息 * @param id * @param bindingResult * @return */ @PostMapping(path="delete") @SsoPowerAop(power = "10100011") public BaseResponse<BaRole> delete(String id,BindingResult bindingResult){ try { return BaseResponseUtils.buildSuccess(roleSv.delete(Long.parseLong(id))); }catch (Exception e){ log.error("删除角色异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 根据ID查询角色信息 * @return */ @GetMapping(path="one") @SsoPowerAop(power = "10100010") //登录与权限同时验证 public BaseResponse<BaRole> one(String id){ try{ BaRole role=roleSv.selectById(id); return BaseResponseUtils.buildSuccess(JSON.toJSON(role)); }catch (Exception e){ log.error("查询角色异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 分页查询角色信息 * @param vo * @return */ @PostMapping(path="some") @SsoPowerAop(power = "10100010") public BaseResponse<QueryResultVo<List<BaRole>>> some(@RequestBody QueryVo vo){ try { return BaseResponseUtils.buildSuccess(roleSv.selectSome(vo)); }catch (Exception e){ log.error("分页查询角色异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } } pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java
New file @@ -0,0 +1,103 @@ package com.dy.pmsBase.role; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsBase.role.QueryVo; import com.dy.pmsGlobal.daoBa.BaPrivilegeMapper; import com.dy.pmsGlobal.daoBa.BaRoleMapper; import com.dy.pmsGlobal.daoBa.BaRolePrivilegeMapper; import com.dy.pmsGlobal.pojoBa.BaRole; import com.dy.pmsGlobal.pojoBa.BaRolePrivilege; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @Slf4j @Service public class RoleSv { private BaRoleMapper dao; private BaRolePrivilegeMapper rpDao; private BaPrivilegeMapper priDao; @Autowired public RoleSv(BaRoleMapper dao, BaRolePrivilegeMapper rpDao,BaPrivilegeMapper priDao) { this.dao = dao; this.rpDao = rpDao; this.priDao = priDao; } @Transactional public int save(BaRole role) { int count = dao.insert(role); // 添加角色权限 updateRolePrivileges(role.id,role.priIds); return count; } /** * 逻辑删除实体 * @param id 实体ID * @return 影响记录数量 */ @Transactional public int delete(Long id) { return this.dao.deleteLogicById(id); } @Transactional public int update(BaRole role) { int count = dao.updateByPrimaryKeySelective(role); // 更新角色权限 updateRolePrivileges(role.id,role.priIds); return count; } /** * 添加或更新角色权限 * @param roleId 角色ID * @param priIds 权限id * @return */ private void updateRolePrivileges(Long roleId,List<Integer> priIds) { if(CollectionUtils.isEmpty(priIds)){ throw new RuntimeException("权限id不能为空"); } // 删除角色权限 rpDao.deleteByRoleId(roleId); priIds.stream().forEach(rp -> { if(priDao.selectByPrimaryKey(rp.longValue()) != null){ rpDao.insert(new BaRolePrivilege(roleId, rp.longValue())); } }); } public BaRole selectById(String roleId) { return dao.selectByPrimaryKey(Long.valueOf(roleId)); } /** * 获取角色列表 */ public QueryResultVo<List<BaRole>> selectSome(QueryVo queryVo) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); //查询符合条件的记录总数 Long itemTotal = this.dao.selectSomeCount(params); QueryResultVo<List<BaRole>> rsVo = new QueryResultVo<>(queryVo.pageSize, queryVo.pageCurr) ; //计算分页等信息 rsVo.calculateAndSet(itemTotal, params); //查询符合条件的记录 rsVo.obj = this.dao.selectSome(params) ; return rsVo ; } }