当前位置: 首页 > news >正文

百度网站认证官网嘉兰图设计有限公司

百度网站认证官网,嘉兰图设计有限公司,wordpress列类型,金融直播间网站建设ps#xff1a;本文所使用的若依是前后端分离的v3.6.0版本。 1、建表 建立业务表的时候#xff0c;需要在表中添加user_id和dept_id两个字段。#xff08;字段一定要一样#xff0c;下文能体现#xff09; user_id#xff1a;表中该条记录的创建人id dept_id#xff1…ps本文所使用的若依是前后端分离的v3.6.0版本。 1、建表 建立业务表的时候需要在表中添加user_id和dept_id两个字段。字段一定要一样下文能体现 user_id表中该条记录的创建人id dept_id表中该条记录的创建人的部门id 建表SQL CREATE TABLE t_warehouse_info (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键ID,user_id bigint(20) DEFAULT NULL COMMENT 用户ID,dept_id bigint(20) DEFAULT NULL COMMENT 部门ID,warehouse_code varchar(255) DEFAULT NULL COMMENT 地址编码,sort bigint(20) DEFAULT 1 COMMENT 排序,video_original_name varchar(500) DEFAULT NULL COMMENT 源视频名,video_name varchar(500) DEFAULT NULL COMMENT 视频名字,video_url varchar(500) DEFAULT NULL COMMENT 视频具体地址,original_file_name varchar(500) DEFAULT NULL COMMENT 源文件名图片、pdf,file_name varchar(500) DEFAULT NULL COMMENT 文件名图片、pdf,file_url varchar(500) DEFAULT NULL COMMENT 文件具体地址图片、pdf,create_time datetime DEFAULT NULL COMMENT 创建时间,update_time datetime DEFAULT NULL COMMENT 更新时间,remark varchar(500) DEFAULT NULL COMMENT 备注,PRIMARY KEY (id) USING BTREE ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8mb4 ROW_FORMATDYNAMIC COMMENT整体库房介绍; 2、生成代码 本地运行若依管理平台打开代码生成页面。 点击导入表 选择导入刚刚创建的业务表 点击生成代码 3、设置用户权限 例如本人用超级用户给自己创建了一个用户用户角色的信息如下 本人的角色权限是部门及以下的权限 4、代码修改 生成的代码我们是不能直接使用的。需要做一些修改。 首先在controller类的插入记录接口中为实体类插入用户id和部门id 其次在xml文件中为select的sql添加  表别名 和  ${params.dataScope} 最后在service的实现类的列表查询方法上添加 注解 DataScope(deptAlias d, userAlias d) 注意发现 deptAlias d, userAlias d 中的d就是表的别名。 5、原理分析 ctrl左键点击我们发现他是一个自定义注解 在数据切面类中获取了当前用户信息并且将注解中的表别名一并传入了dataScopeFilter方法中。 我们在点击进入到dataScopeFilter方法中。 瞬间明白了通过if判断当前用户的权限范围配合注解中的表别名生成不同权限的sql语句。 最后将sql放到业务实体类继承的BaseEntity类的params字段中。 xml文件中的${params.dataScope}就是对应了BaseEntity类中的params字段。 /**** param joinPoint 切点* param user 当前用户* param deptAlias 部门表别名* param userAlias 用户表别名*/ public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias) {StringBuilder sqlString new StringBuilder();for (SysRole role : user.getRoles()){// 获取当前用户的数据权限范围String dataScope role.getDataScope();if (DATA_SCOPE_ALL.equals(dataScope)){/** 全部数据权限 1 */sqlString new StringBuilder();break;}else if (DATA_SCOPE_CUSTOM.equals(dataScope)){/** 自定数据权限 2 */sqlString.append(StringUtils.format( OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id {} ) , deptAlias,role.getRoleId()));}else if (DATA_SCOPE_DEPT.equals(dataScope)){/** 部门数据权限 3 */sqlString.append(StringUtils.format( OR {}.dept_id {} , deptAlias, user.getDeptId()));}else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)){/** 部门及以下数据权限 4 */sqlString.append(StringUtils.format( OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id {} or find_in_set( {} , ancestors ) ),deptAlias, user.getDeptId(), user.getDeptId()));}else if (DATA_SCOPE_SELF.equals(dataScope)){if (StringUtils.isNotBlank(userAlias)){/** 仅本人数据权限 5 */sqlString.append(StringUtils.format( OR {}.user_id {} , userAlias, user.getUserId()));}else{// 数据权限为仅本人且没有userAlias别名不查询任何数据sqlString.append( OR 10 );}}}if (StringUtils.isNotBlank(sqlString.toString())){Object params joinPoint.getArgs()[0];if (StringUtils.isNotNull(params) params instanceof BaseEntity){BaseEntity baseEntity (BaseEntity) params;baseEntity.getParams().put(DATA_SCOPE, AND ( sqlString.substring(4) ));}} } 这里权限范围值是存在了dataScope字段中。 通过dataScope字段对比 /*** 全部数据权限*/public static final String DATA_SCOPE_ALL 1;/*** 自定数据权限*/public static final String DATA_SCOPE_CUSTOM 2;/*** 部门数据权限*/public static final String DATA_SCOPE_DEPT 3;/*** 部门及以下数据权限*/public static final String DATA_SCOPE_DEPT_AND_CHILD 4;/*** 仅本人数据权限*/public static final String DATA_SCOPE_SELF 5;/*** 数据权限过滤关键字*/public static final String DATA_SCOPE dataScope; 例如本人的权限范围是本部门及以下的权限。则生成的sql语句是 OR u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id {当前登录用户部门id} or find_in_set( {当前登录用户部门id} , ancestors ) )最后存在BaseEntity类的params字段中。 /*** Entity基类** author ruoyi*/ public class BaseEntity implements Serializable {private static final long serialVersionUID 1L;/** 搜索值 */private String searchValue;/** 创建者 */private String createBy;/** 创建时间 */JsonFormat(pattern yyyy-MM-dd HH:mm:ss)Excel(name 时间, dateFormat yyyy-MM-dd HH:mm:ss,sort 100,width 28)private Date createTime;/** 更新者 */private String updateBy;/** 更新时间 */JsonFormat(pattern yyyy-MM-dd HH:mm:ss)private Date updateTime;/** 备注 */private String remark;/** 请求参数 */private MapString, Object params;} 6、最终请求执行的SQL 语句 14:59:24.942 [http-nio-8080-exec-21] DEBUG c.r.c.m.W.selectWarehouseInfoList - [debug,137] - Preparing: select id, user_id, dept_id, warehouse_code, sort, video_original_name, video_name, video_url, original_file_name, file_name, file_url, create_time, update_time, remark from t_warehouse_info d WHERE (d.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id 204 or find_in_set( 204 , ancestors ) )) order by sort# 提取Sql select id, user_id, dept_id, warehouse_code, sort, video_original_name, video_name, video_url, original_file_name, file_name, file_url, create_time, update_time, remark from t_warehouse_info d WHERE (d.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id 204 or find_in_set( 204 , ancestors ) )) order by sort
http://www.hkea.cn/news/14435755/

相关文章:

  • 网站建设哪里实惠wordpress wowslider
  • 全网推广网站网站开发与维护视频教程
  • 做3d动画视频接私活的网站买一个域名多少钱
  • 太原网站制作公司哪家好医院门户网站建设
  • 好网站欣赏曲靖网站制作公司
  • 做哪些网站比较好的网站空间数据
  • 投资网站哪个好怎么增加网站的外链
  • 网页设计注册页面代码seo关键词优化排名软件
  • 凌河建设网站crm微信管理系统
  • 旅行社手机网站建设免费建站网站号
  • 天津营销网站建设公司哪家好互联网博客网站
  • 用ps切片做网站能不能完成美篇制作app下载安装免费
  • 建设网站找什么问题推广怎么做才可以赚钱
  • 建外贸网站的众希网站建设
  • 什么软件做网站最好阜阳公司网站建设
  • 罗湖建网站公司江苏建设工程交易信息网站
  • 手机网站制作机构更改wordpress主题
  • 定制 网站开发 价格帮建网站
  • 建设一个直播网站在线图片编辑器精简版
  • 免费设计网站免费网站服务器域名
  • vs开发网站开发教程昆明做凡科网站
  • 杭州做企业网站广告设计公司 上海
  • 深圳中高端网站建设怎么样可以做数据图的的网站有哪些
  • 广州网站搭建费用关键词权重如何打造
  • 免费手机建网站有哪些软件网络营销与直播电商专业就业前景
  • 成品网站源码在线本地网站开发公司
  • 湛江正规网站制作方案哪儿能做网站建设
  • 网站制作的流程公司网页维护
  • 山东住房和城乡建设局网站首页任务一 分析电子商务网站栏目结构
  • 南皮做网站价格百度指数只能查90天吗