spring boot+mybatis plus进行sql拦截实现权限过滤,使用mybatis plus的DataPermissionHandler
📃 关联文档
📄 前置文档
📄 前置文档
自定义一个AllbsDataPermissionHandler,使用mybatis plus自带的是可以的,主要考虑到后面还有其他自定义效果,所以单独写了一个
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.schema.Table;
/**
* 接口 AllbsDataPermissionHandler
*
* @author ChenQi
* @date 2023/3/28
*/
public interface AllbsDataPermissionHandler {
/**
* 获取数据权限 SQL 片段
*
* @param table 表相关信息
* @param where 待执行 SQL Where 条件表达式
* @param mappedStatementId Mybatis MappedStateme ...
自定义格式化mybatis、mybatis plus中打印的sql
前提条件
连接池使用的是阿里的druid,其他连接池后续有空再考虑
继承FilterEventAdapter并重写statement_close和resultSet_next
statement_close 用于格式化delete,insert(没有主键id返回),update
resultSet_next 用户格式化select,insert(有主键id返回)
代码
package cn.allbs.mybatis.filter;
import cn.allbs.common.constant.DateConstant;
import cn.allbs.mybatis.properties.MybatisProperties;
import cn.allbs.mybatis.utils.TableConsoleUtil;
import com.alibaba.druid.DbType;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterEventAdapter;
im ...
SFJK-200 可燃气体控制器 MODBUS 通讯协议
工具包引入
<dependency>
<groupId>cn.allbs</groupId>
<artifactId>allbs-model</artifactId>
<version>0.6.0</version>
</dependency>
源码下载
引用站外地址
解析工具的源码下载
github
解析&生成过程中自定义参数说明
应用场景
参数值
参数说明
指令生成
GeneratorEnum.ADDRESS.name
从站地址
指令生成
GeneratorEnum.FUNCTION.name
功能码
指令生成
GeneratorEnum.START_ADDRESS.name
起始寄存器地址
指令生成
GeneratorEnum.READ_ADD ...
GB26875 城市消防远程监控 通讯协议解析
工具包引入
<dependency>
<groupId>cn.allbs</groupId>
<artifactId>allbs-model</artifactId>
<version>0.5.0</version>
</dependency>
源码下载
引用站外地址
源码下载
github
解析字段说明
字段值
字段说明
sysType
系统类型标志
sysTypeTrans
系统类型标志含义
sysAddress
系统地址
sysDesc
系统状态
partType
部件类型
partTypeTrans
部件类型翻译
partAddress
部件地址
partDesc
部件状态
partExplain
部件说明
time
时间
...
JBF293K 通讯接口卡 RS232/485 通讯协议解析
工具包引入
<dependency>
<groupId>cn.allbs</groupId>
<artifactId>allbs-model</artifactId>
<version>0.4.0</version>
</dependency>
源码下载
引用站外地址
源码下载
github
解析字段说明
字段值
字段说明
machineNo
机器号
time
时间
version
版本号
order
命令-中文说明
preOrder
命令-原始值
code
代码
controller
控制器
message
信息类型-中文说明
preMessage
信息类型-原始值
circuit
回路
part
部位
disk
盘号
...
java程序调用dll
项目需求
调用捷宸EIO开发包DLL动态库控制应急门的开关停,现场应急门继电器连接的是6、7、8,分别对应的是开、停、关。0为打开,1为关闭。
java程序开发
在resource中新建lib将dll放入其中
sdk工具开发
package com.lyc.ocr.door;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface DoorCallSDK extends Library {
DoorCallSDK INSTANCE = (DoorCallSDK) Native.loadLibrary("IOSDK_x64", DoorCallSDK.class);
/**
* 创建设备
* </p>
* 以IP 地址为参数,创建一个设备
*
* @param strIp ansi 字符串,设备 IP 地址 如"192.168.1
* @return 0 表示创建设备失败,非 0 成功;表示"设备句柄"
...
权限系统说明+代码
系统权限
说明
功能权限(就是常用的RBAC那一套,登录->控制到按钮级别的权限系统)
数据权限 (根据不用用户,如一个园区分为多家企业,每家企业看到的数据内容不同,园区内不同领导分管不同的多家企业)
功能权限
源码地址
权限框架
spring security
自定义security策略,初步的权限校验,拦截所有的请求,swagger页面和接口无法访问
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// 跨域检测
.antMatchers(Ht ...
在指定时间执行js中的方法
使用moment.js库
官网下载
//! moment.js
;
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
global.moment = factory()
}(this, (function () {
'use strict';
var hookCallback;
function hooks() {
return hookCallback.apply(null, arguments);
}
// This is done to register the method called with moment()
...
整个网站变为灰色
添加整个网站变灰的开关
添加网站变灰的css文件
html {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}
index.styl 控制该css文件是否引入
if hexo-config('whole_blog_grey.enable')
@import 'grey/index.css'
效果
纯css实现文字滚动
横向滚动示例
html
<div class="marquee">
<div class="marquee-wrap" style="width: 430px;text-align: center">
<span
class="yellow marquee-content">这是一断横向滚动的文字</span>
</div>
</div>
css
.marquee {
overflow: hidden;
}
.marquee .marquee-wrap {
width: 100%;
animation: marquee-wrap 4s infinite linear;
}
.marquee .marquee-content {
float: left;
white-space: nowrap;
min-width: 100%;
animation: marquee-content 4s infin ...