@@ -1,132 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-auth</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
<parent> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-parent</artifactId> | |||
<version>2.5.6</version> | |||
<relativePath/> <!-- lookup parent from repository --> | |||
</parent> | |||
<modelVersion>4.0.0</modelVersion> | |||
<dependencies> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-web</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-core</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-test</artifactId> | |||
<scope>test</scope> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher --> | |||
<dependency> | |||
<groupId>org.junit.platform</groupId> | |||
<artifactId>junit-platform-launcher</artifactId> | |||
<version>1.6.2</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> | |||
<dependency> | |||
<groupId>org.junit.jupiter</groupId> | |||
<artifactId>junit-jupiter-api</artifactId> | |||
<version>5.6.2</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --> | |||
<dependency> | |||
<groupId>org.junit.jupiter</groupId> | |||
<artifactId>junit-jupiter-engine</artifactId> | |||
<version>5.6.2</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.junit.vintage</groupId> | |||
<artifactId>junit-vintage-engine</artifactId> | |||
<version>5.6.2</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.junit.jupiter</groupId> | |||
<artifactId>junit-jupiter-params</artifactId> | |||
<version>5.6.2</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.springframework</groupId> | |||
<artifactId>spring-test</artifactId> | |||
<version>5.2.7.RELEASE</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all --> | |||
<dependency> | |||
<groupId>org.mockito</groupId> | |||
<artifactId>mockito-all</artifactId> | |||
<version>1.10.19</version> | |||
<scope>test</scope> | |||
</dependency> | |||
</dependencies> | |||
<build> | |||
<!-- <finalName>user</finalName>--> | |||
<plugins> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-source-plugin</artifactId> | |||
<executions> | |||
<execution> | |||
<id>attach-sources</id> | |||
<phase>verify</phase> | |||
<goals> | |||
<goal>jar-no-fork</goal> | |||
</goals> | |||
</execution> | |||
</executions> | |||
</plugin> | |||
<!-- 用于生成jar包的plugin --> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-jar-plugin</artifactId> | |||
<version>2.6</version> | |||
<configuration> | |||
<excludes> | |||
<exclude>config/*.yaml</exclude> | |||
</excludes> | |||
</configuration> | |||
</plugin> | |||
</plugins> | |||
<!-- <resources>--> | |||
<!-- <resource>--> | |||
<!-- <filtering>true</filtering>--> | |||
<!-- <directory>src/main/resources</directory>--> | |||
<!-- <excludes>--> | |||
<!-- <exclude>config/*.yaml</exclude>--> | |||
<!-- </excludes>--> | |||
<!-- </resource>--> | |||
<!-- </resources>--> | |||
</build> | |||
<distributionManagement> | |||
<repository> | |||
<id>nexus-releases</id> | |||
<name>Nexus Release Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-releases/</url> | |||
</repository> | |||
<snapshotRepository> | |||
<id>nexus-snapshots</id> | |||
<name>Nexus Snapshot Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-snapshots/</url> | |||
</snapshotRepository> | |||
</distributionManagement> | |||
</project> |
@@ -1,66 +0,0 @@ | |||
package cc.smtweb.framework.auth.captcha; | |||
import javax.imageio.ImageIO; | |||
import java.awt.*; | |||
import java.awt.image.BufferedImage; | |||
import java.io.File; | |||
import java.io.IOException; | |||
public class ImageMaker { | |||
private static final String signChar = "()+-*/="; | |||
// 生成png图片 | |||
public void make() throws IOException { | |||
int fontHeight = 34; | |||
int width = 19; | |||
int height = fontHeight * (62 + signChar.length()); | |||
// 创建BufferedImage对象 | |||
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); | |||
// ---------- 增加下面的代码使得背景透明 ----------------- | |||
Graphics2D g2d = image.createGraphics(); | |||
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); | |||
g2d.dispose(); | |||
// 画图 | |||
g2d = image.createGraphics(); | |||
g2d.setColor(new Color(0,0,0)); | |||
// 画图 | |||
Font font = new Font("Courier New", Font.BOLD, 30); | |||
g2d.setFont(font); | |||
System.out.println(font.getMaxCharBounds(g2d.getFontRenderContext())); | |||
int top = 25; | |||
for (int i = 0; i < 10; i++) { | |||
g2d.drawString(i + "", 0, top); | |||
top += fontHeight; | |||
} | |||
for (int i = 0; i < 26; i++) { | |||
g2d.drawString((char)(i + (int)'a') + "", 0, top); | |||
top += fontHeight; | |||
} | |||
for (int i = 0; i < 26; i++) { | |||
g2d.drawString((char)(i + (int)'A') + "", 0, top); | |||
top += fontHeight; | |||
} | |||
for (int i = 0; i < signChar.length(); i++) { | |||
g2d.drawString(signChar.charAt(i) + "", 0, top); | |||
top += fontHeight; | |||
} | |||
// 释放对象 | |||
g2d.dispose(); | |||
// 保存文件 | |||
ImageIO.write(image, "png", new File("/var/tmp/test.png")); | |||
} | |||
public static void main(String[] args) throws IOException { | |||
new ImageMaker().make(); | |||
} | |||
} |
@@ -1,21 +0,0 @@ | |||
package cc.smtweb.framework.auth.spring; | |||
import cc.smtweb.framework.core.mvc.config.ControllerConfig; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.ComponentScan; | |||
import org.springframework.context.annotation.Configuration; | |||
/** | |||
* @author kevin | |||
*/ | |||
@Configuration | |||
@ComponentScan | |||
public class AuthAutoConfiguration { | |||
/** 配置自定义service扫描路径 {module}/{service}/{method} */ | |||
@Bean | |||
public ControllerConfig authControllerConfig() { | |||
return new ControllerConfig("auth", "cc.smtweb.framework.auth.web"); | |||
} | |||
} |
@@ -1,60 +0,0 @@ | |||
package cc.smtweb.framework.auth.spring.cache; | |||
import cc.smtweb.framework.core.annotation.SwCache; | |||
import cc.smtweb.framework.core.cache.AbstractCache; | |||
import cc.smtweb.framework.core.db.jdbc.JdbcEngine; | |||
import cc.smtweb.framework.core.mvc.realm.service.PermChecker; | |||
import lombok.extern.log4j.Log4j2; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import java.util.*; | |||
/** | |||
* 用户权限集合缓存器,@todo 权限部分需要重写 | |||
* @author xkliu | |||
*/ | |||
@Log4j2 | |||
@SwCache(ident = "PERM_CHECKER", title = "用户权限") | |||
public class RealmCache extends AbstractCache<PermChecker> { | |||
@Autowired | |||
private JdbcEngine dbEngine; | |||
private static final long ENTERPRISE_ADMIN_ID = 1; | |||
@Override | |||
protected String getId(PermChecker bean) { | |||
return "1";//todo | |||
} | |||
@Override | |||
protected List<PermChecker> loadAll() { | |||
return null; | |||
} | |||
protected PermChecker load(Long key) { | |||
// admin | |||
if (key == ENTERPRISE_ADMIN_ID) { | |||
return PermChecker.build(new HashSet<>(Collections.singletonList("*"))); | |||
} | |||
// TODO: 合并相同角色,自己到缓存里面获取 | |||
Set<String> permissions = new HashSet<>(); | |||
List<String> permList = dbEngine.queryStringList("SELECT menu_api_perm FROM sys_menu WHERE menu_id in\n" + | |||
"(SELECT rmp_menu_id from sys_role_menu_privilege WHERE rmp_role_id in\n" + | |||
"(SELECT role_id FROM sw_user.sys_role WHERE role_id IN" + | |||
"(SELECT ur_role_id FROM sw_user.sys_user_role WHERE ur_user_id=?)))", key); | |||
if (permList != null) { | |||
for (String perm: permList) { | |||
for (String item: perm.split(",")) { | |||
permissions.add(item.trim()); | |||
} | |||
} | |||
} | |||
return PermChecker.build(permissions); | |||
} | |||
} |
@@ -1,11 +0,0 @@ | |||
package cc.smtweb.framework.auth.web.entity; | |||
import lombok.Data; | |||
@Data | |||
public class LoginAckVO { | |||
private Long userId; | |||
private String userAvatar; | |||
private String userName; | |||
private String token; | |||
} |
@@ -1,12 +0,0 @@ | |||
package cc.smtweb.framework.auth.web.entity; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
@Data | |||
public class LoginVO implements Serializable { | |||
private String username; | |||
private String password; | |||
} |
@@ -1,29 +0,0 @@ | |||
package cc.smtweb.framework.auth.web.entity; | |||
import cc.smtweb.framework.core.annotation.SwColumn; | |||
import cc.smtweb.framework.core.annotation.SwTable; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
@Data | |||
@SwTable("sw_user.sys_menu") | |||
public class MenuPO implements Serializable { | |||
@SwColumn(type={SwColumn.Type.ID}) | |||
private Long menuId; | |||
@SwColumn(type={SwColumn.Type.PARENT_ID}) | |||
private Long menuParentId; | |||
private String menuName; | |||
private Long menuSiteId; | |||
private String menuPermiss; | |||
private String menuUrl; | |||
@SwColumn(type={SwColumn.Type.ORDER}) | |||
private Integer menuSort; | |||
} |
@@ -1,28 +0,0 @@ | |||
package cc.smtweb.framework.auth.web.entity; | |||
import cc.smtweb.framework.core.annotation.SwColumn; | |||
import cc.smtweb.framework.core.annotation.SwTable; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
@Data | |||
@SwTable("sw_user.sys_user") | |||
public class UserPO implements Serializable { | |||
@SwColumn(type={SwColumn.Type.ID}) | |||
private Long userId; | |||
private String userNickCode; | |||
private String userNickName; | |||
private Long userCreatePartyId; | |||
private String userPwd; | |||
private String userPhone; | |||
private Integer userStatus; | |||
private String userAvatar; | |||
} |
@@ -1,89 +0,0 @@ | |||
package cc.smtweb.framework.auth.web.service; | |||
import cc.smtweb.framework.auth.web.entity.LoginAckVO; | |||
import cc.smtweb.framework.auth.web.entity.LoginVO; | |||
import cc.smtweb.framework.auth.web.entity.UserPO; | |||
import cc.smtweb.framework.core.annotation.*; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.session.SessionManager; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.framework.core.db.DbEngine; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.apache.commons.codec.digest.DigestUtils; | |||
import org.apache.commons.lang3.StringUtils; | |||
@Slf4j | |||
@SwService | |||
public class AuthService { | |||
@SwParam | |||
private DbEngine dbEngine; | |||
@SwParam | |||
private SessionManager sessionManager; | |||
@SwPerm(SwPerm.NONE) | |||
public R login(@SwBody LoginVO loginPO) { | |||
if (StringUtils.isBlank(loginPO.getUsername())) { | |||
return R.error("账号不能为空"); | |||
} | |||
if (StringUtils.isBlank(loginPO.getPassword())) { | |||
return R.error("密码不能为空"); | |||
} | |||
UserPO user = dbEngine.queryEntity("select user_id,user_nick_name,user_nick_code,user_pwd,user_create_party_id from sw_user.sys_user where user_nick_code=?", UserPO.class, loginPO.getUsername()); | |||
if (user == null) { | |||
return R.error("账号不存在"); | |||
} | |||
// digest:md5("goodpj" + user.userId + password) | |||
String pass = DigestUtils.md5Hex("goodpj" + user.getUserId() + loginPO.getPassword()); | |||
if (!pass.equals(user.getUserPwd())) { | |||
return R.error("账号或者密码出错"); | |||
} | |||
UserSession userSession = new UserSession(); | |||
userSession.setUserId(user.getUserId()); | |||
userSession.setSiteId(user.getUserCreatePartyId()); | |||
String token = sessionManager.login(userSession); | |||
LoginAckVO data = new LoginAckVO(); | |||
data.setUserId(user.getUserId()); | |||
data.setUserName(user.getUserNickName()); | |||
data.setUserAvatar(user.getUserAvatar()); | |||
data.setToken(token); | |||
return R.success(data); | |||
} | |||
@SwPerm() | |||
public R ping(@SwParam("msg") String msg) { | |||
return R.success(msg); | |||
} | |||
@SwPerm("user:edit") | |||
public R config(@SwParam("username") String username) { | |||
return R.success("config: " + username); | |||
} | |||
/** | |||
* 退出登录 | |||
* @return code | |||
*/ | |||
public R logout() { | |||
sessionManager.logout(); | |||
return R.success(); | |||
} | |||
// defaultRun 命名的函数是默认函数 | |||
// @SwPerm(SwPerm.NONE) | |||
// public R defaultRun(@SwPathParam String path) { | |||
// return R.success(path).put("dao", authDao); | |||
// } | |||
} |
@@ -1,2 +0,0 @@ | |||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ | |||
cc.smtweb.framework.auth.spring.AuthAutoConfiguration |
@@ -1,64 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
file: | |||
local-path: /data/files/ | |||
host: http://127.0.0.1 | |||
url: http://127.0.0.1:8888/files/ | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
feign: | |||
hystrix: | |||
enabled: false | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_user | |||
main: | |||
allow-bean-definition-overriding: true | |||
banner-mode: console | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: root | |||
password: 1681860 | |||
# 连接池配置 | |||
hikari: | |||
pool-name: HikariPool | |||
minimum-idle: 10 | |||
maximum-pool-size: 100 | |||
connection-timeout: 60000 | |||
idle-timeout: 600000 | |||
max-lifetime: 1800000 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h | |||
@@ -1,35 +0,0 @@ | |||
sme: | |||
machine-id: 1 | |||
file-local-path: /data/files/smart/ | |||
file-host: http://auth.smtweb.cc | |||
file-url: ${sme.file-host}:${server.port}${server.servlet.context-path}/${sme.file-local-path} | |||
server: | |||
port: 10001 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
smtweb: DEBUG | |||
spring: | |||
main: | |||
allow-bean-definition-overriding: true | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
datasource: | |||
user: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: smt | |||
password: smt_123456 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
@@ -1,3 +0,0 @@ | |||
spring: | |||
profiles: | |||
active: dev |
@@ -1,2 +0,0 @@ | |||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ | |||
cc.smtweb.framework.auth.spring.AuthAutoConfiguration |
@@ -1,64 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
file: | |||
local-path: /data/files/ | |||
host: http://127.0.0.1 | |||
url: http://127.0.0.1:8888/files/ | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
feign: | |||
hystrix: | |||
enabled: false | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_user | |||
main: | |||
allow-bean-definition-overriding: true | |||
banner-mode: console | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: root | |||
password: 1681860 | |||
# 连接池配置 | |||
hikari: | |||
pool-name: HikariPool | |||
minimum-idle: 10 | |||
maximum-pool-size: 100 | |||
connection-timeout: 60000 | |||
idle-timeout: 600000 | |||
max-lifetime: 1800000 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h | |||
@@ -1,35 +0,0 @@ | |||
sme: | |||
machine-id: 1 | |||
file-local-path: /data/files/smart/ | |||
file-host: http://auth.smtweb.cc | |||
file-url: ${sme.file-host}:${server.port}${server.servlet.context-path}/${sme.file-local-path} | |||
server: | |||
port: 10001 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
smtweb: DEBUG | |||
spring: | |||
main: | |||
allow-bean-definition-overriding: true | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
datasource: | |||
user: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: smt | |||
password: smt_123456 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
@@ -1,3 +0,0 @@ | |||
spring: | |||
profiles: | |||
active: dev |
@@ -1,5 +0,0 @@ | |||
#Generated by Apache Maven | |||
#Tue Nov 02 19:04:59 CST 2021 | |||
version=2.1.0-SNAPSHOT | |||
groupId=cc.smtweb | |||
artifactId=sw-framework-auth |
@@ -1,9 +0,0 @@ | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\web\entity\LoginAckVO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\web\entity\UserPO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\spring\cache\RealmCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\AuthApplication.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\web\entity\MenuPO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\web\entity\LoginVO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\captcha\ImageMaker.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\spring\AuthAutoConfiguration.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-auth\src\main\java\cc\smtweb\framework\auth\web\service\AuthService.java |
@@ -1,5 +0,0 @@ | |||
#Generated by Apache Maven | |||
#Tue Nov 02 19:04:55 CST 2021 | |||
version=2.1.0-SNAPSHOT | |||
groupId=cc.smtweb | |||
artifactId=sw-framework-core |
@@ -1 +0,0 @@ | |||
cc\smtweb\framework\core\db\cache\DbCacheList$IdName.class |
@@ -1,208 +1,256 @@ | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\EntityColumn.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\EntityCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\UnknownAccountException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\SessionUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwColumn.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractTwoKeyCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\SingleExecutorSingleWaiter.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\JdbcEngine.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\IEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreApplication.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\UpdateSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\WebMvcConfig.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\NonConcurrentTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\CachedListPart.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\EntityColumnForeign.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\ControllerAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\StringBodyEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwPerm.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\SimpleJob.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\FixedRateTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\DateEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\ClassParser.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\SessionManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\OneTimeTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\ISwService.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\IRealmLoader.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\MapUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\JdbcTrans.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BizException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\IBeanContext.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\LocalJobExecutor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\SysTaskManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BindParamException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwBean.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\ShortEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\AuthenticationException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\config\RedisConfig.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\FixedDelayTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\CacheEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\HttpServletResponseEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\NullSerializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\CacheItem.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SelectSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\AbstractPermInterceptor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreAutoConfiguration.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\SwMap.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlJoinTable.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\UserSessionEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\ISchedulerWakeup.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\DeleteSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerThread.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\path\PathParamEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\EntityDao.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\kryo\KryoTool.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\SchedulerManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ModelTimeoutTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\CronTimerTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\UserSessionArgumentResolver.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwService.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwConstruct.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\VariableUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\TransSql.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\IntegerEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwHeaderParam.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\MethodAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\RedisManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\FieldAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\EntityTree.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\MethodParamAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BindBeanException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\SchedulerTaskManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\TimestampDeserializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\CacheException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\RedisJobExecutor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\UserSession.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\DefaultPageController.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\NamedRunnable.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractLongKeyCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractRequestEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\CacheEngine.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\AbstractSelectSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\RealTimeTimer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\CacheSysTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\SwException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\SimpleJobQueue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\DbEngine.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\TaskStartEvent.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\ExceptionMessage.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\BeanManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\NullEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\DbCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\SchedulerMethodAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\TimeEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\IpAddrUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\CommonUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\AbstractTimer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\Synchronizer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\DbCacheMap.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\GroupJobQueue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\LongEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\DateUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\SettingsEnvironmentPostProcessor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlFieldValue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\BooleanEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\RedisConnection.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\WebStartedEvent.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\ByteEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\AsyncJobSink.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\JsonUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\service\PermChecker.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\RedisSysTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\MethodParser.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\FixedTimerTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwColumnForeign.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\WebDataBinder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\AbstractUpdateSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SimulationTimer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\CronTimerTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\SchedulerPoint.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ModelTimeoutClient.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\NumberTimeUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\CacheManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\MethodAccessManager.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwDestroy.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwPathParam.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\IdGenerator.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\config\CacheEntity.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\EntityTreeUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJobQueue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwScheduling.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\PermInterceptor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\ISysTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ScheduledNamedRunnable.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\TimeSerializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\SwIpAddrEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractStringKeyCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\DateSerializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\AbstractBodyEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\BeanBodyEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\config\CacheProperties.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\MapPropertyRowMapper.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\LongSerializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\PackageScanner.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\config\DbEngineConfiguration.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\InsertSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractParameterEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\DateDeserializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\SingletonFieldAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\ForbiddenException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\TimestampEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlWhereValue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\ISwCache.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\AuthorizationException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TaskQueue.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwParam.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\ApiController.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\NumberUtil.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\RedisBroadcastEvent.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\BeanTypeEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\HttpServletRequestEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\CharEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\IBeanAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SystemTimeSource.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ScheduledRunnable.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\AuthorizationInterceptor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\CachedMap.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\AbstractContextEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\LongDeserializer.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimeoutTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\cache\ColumnField.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\BeanContext.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\redis\RedisPooledObjectFactory.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\service\PermCheckItem.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJobExecutor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\DoubleEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwTable.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\JsonParseException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\DbCacheList.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreApplicationStartedListener.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\StringEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\DirectSelectSqlBuilder.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\ParamEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractNumberEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\GroupJob.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\GlobalExceptionHandler.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\DbException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimeSource.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlJoinField.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJob.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SimulationTimeSource.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\R.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\BeanEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\ControllerConfig.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\ApplicationScanner.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\AbstractTimerTrigger.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerTask.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\config\RuleProperties.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\CronExpression.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\AbstractEntityDao.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\UnauthenticatedException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\BindFieldAccess.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ExecutionRejectedException.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\FloatEditor.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\SwIpAddr.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwBody.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwParam.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\DirectSelectSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ExecutionRejectedException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJob.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\FixedTimerTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\TaskStartEvent.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\variable\ICalcVar.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\AbstractContextEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\InsertSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractTreeHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwAction.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\AuthorizationException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\DateDeserializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwService.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\TimestampEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\config\YamlPropertyLoaderFactory.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\SchedulerPoint.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\SessionUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\IntEnum.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreApplicationStartedListener.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelIndex.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\DateSerializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\MapPropertyRowMapper.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelCatalog.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\MethodAccessManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\BeanManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultComboHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\BooleanEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\FloatEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\SchedulerTaskManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\RedisBroadcastEvent.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\PackageScanner.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\BaseBeanPropertyRowMapper.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\IDataProvider.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\DefaultPageController.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractCompProvider.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\GlobalExceptionHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwPerm.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\LongDeserializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractSaveHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\AbstractEnum.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\SwMap.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelTable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\HttpServletRequestEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\DateEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\list\FooterField.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\SchedulerMethodAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\UnauthenticatedException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\RedisPooledObjectFactory.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\NullEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\PermInterceptor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\StringEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlJoinField.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\EntityColumnForeign.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\ExceptionMessage.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwAttr.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\EntityDao.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\SessionCacheFactory.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\BeanTypeEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelLinkName.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\LongSerializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\DefaultDatabaseInfoImpl.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractEntityCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\MethodParser.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\SwException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\DbException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\AbsDbWorker.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\EntityCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\SpringUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\UrlMaker.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractDelHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\IBeanAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\IDatabaseInfo.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\attr\AbstractAttrEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\GroupJobQueue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\SessionManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\DatabaseUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\Synchronizer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\UserSession.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\IDbWorker.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\BeanContext.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\IScanActionBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\IEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\ForbiddenException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractLoadHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\ShortEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\LongEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultSaveHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\WebDataBinder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\BaseBeanSerializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\TimeSerializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\SqlNamedPara.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\AbstractCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\ParamEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\BeanEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BindParamException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultListHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\ApiController.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\RedisConnection.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwBody.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwHeaderParam.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\AbstractSelectSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ScheduledNamedRunnable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\EntityHelper.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwDestroy.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\config\DbEngineConfiguration.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\SwIpAddrEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SimulationTimer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\ScanContext.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwConstruct.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\SingletonFieldAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\ClassParser.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\SettingsEnvironmentPostProcessor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\AsyncJobSink.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\StrEnum.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\ApiConfigBean.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJobExecutor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\sync\SingleExecutorSingleWaiter.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\StringBodyEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\FixedDelayTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\SwIpAddr.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\ByteEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\SwMapBodyEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\WebStartedEvent.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\SqlPara.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\AuthenticationException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\DateUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\SqlUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelField.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\BaseBean.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\SchedulerManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimerThread.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\CacheEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\RedisManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\VariableUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwColumnForeign.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\CharEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwColumn.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\AbstractPermInterceptor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\TreeHelper.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\ISchedulerWakeup.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\CronTimerTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\BindFieldAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SystemTimeSource.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\ISysTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\service\PermChecker.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\UpdateSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\session\UserSessionArgumentResolver.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwScheduling.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\AbstractTimerTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\ModelDatabaseCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\bean\UserSessionEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\UtilTime.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\RealTimeTimer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\IdGenerator.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlWhereValue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\DeleteSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\IBeanContext.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\service\PermCheckItem.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\JsonUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\LocalJobExecutor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\GroupJob.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\TimestampDeserializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SelectSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelDatabase.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\kryo\KryoTool.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultLoadHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\SessionCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultProvider.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractNumberEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\JsonParseException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\IActionManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\CommUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwTable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\cache\ModelTableCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractRequestEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\NumberUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\AbstractEntityDao.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\AbstractParameterEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\DefaultDelHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimeoutTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\IntegerEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\MapUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreApplication.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\vo\ModelProject.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\CacheManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractCompService.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\FieldAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\BeanUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\R.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\AbstractListHandler.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\SimpleJob.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\SwEnum.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\DbEngine.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\RedisSysTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\IWorker.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\jackson\NullSerializer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\FixedRateTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\AbstractUpdateSqlBuilder.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\variable\SwVariable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\AbstractJobQueue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\JdbcEngine.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\AbstractTimer.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\OneTimeTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\SimpleJobQueue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\impl\DefaultEntity.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwBean.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\annotation\SwPathParam.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\NonConcurrentTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\ApplicationScanner.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TaskQueue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\TimeSource.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlJoinTable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\CronTimerTrigger.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\SwMapPropertyRowMapper.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\WebMvcConfig.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\exception\UnknownAccountException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ScheduledRunnable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\common\SwConsts.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\ISwCache.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\MethodAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\scan\IScanAction.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\scheduler\job\RedisJobExecutor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\DoubleEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\variable\SwVariableFactory.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\IMethodAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\interceptor\AuthorizationInterceptor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\util\IpAddrUtil.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\CronExpression.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ModelTimeoutTask.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\ModelTimeoutClient.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\jdbc\JdbcTrans.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\config\ControllerConfig.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\param\TimeEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\SimulationTimeSource.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BindBeanException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\CoreAutoConfiguration.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\path\PathParamEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\sqlbuilder\SqlFieldValue.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\systask\SysTaskManager.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\db\dao\EntityColumn.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\realm\IRealmLoader.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\service\SwListData.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\attr\BeanAttrEditor.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\ControllerAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\exception\BizException.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\com\serotonin\timer\NamedRunnable.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\access\MethodParamAccess.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\cache\redis\config\RedisConfig.java | |||
E:\jujia\git\6.0\smtweb2\smtweb-framework\sw-framework-core\src\main\java\cc\smtweb\framework\core\mvc\controller\binder\body\BeanBodyEditor.java |
@@ -1,3 +0,0 @@ | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\test\java\cc\smtweb\framework\test\JsonTest.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\test\java\cc\smtweb\framework\test\SqlBuilderTest.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-core\src\test\java\cc\smtweb\framework\test\DaoTransTest.java |
@@ -1,94 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-file</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
<parent> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-parent</artifactId> | |||
<version>2.5.6</version> | |||
<relativePath/> <!-- lookup parent from repository --> | |||
</parent> | |||
<modelVersion>4.0.0</modelVersion> | |||
<dependencies> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-web</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-core</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>net.coobird</groupId> | |||
<artifactId>thumbnailator</artifactId> | |||
<version>[0.4, 0.5)</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.jclarion</groupId> | |||
<artifactId>image4j</artifactId> | |||
<version>0.7</version> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> | |||
<dependency> | |||
<groupId>commons-codec</groupId> | |||
<artifactId>commons-codec</artifactId> | |||
<version>1.15</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>commons-io</groupId> | |||
<artifactId>commons-io</artifactId> | |||
<version>2.11.0</version> | |||
</dependency> | |||
</dependencies> | |||
<build> | |||
<!-- <finalName>user</finalName>--> | |||
<plugins> | |||
<!-- <plugin>--> | |||
<!-- <groupId>org.apache.maven.plugins</groupId>--> | |||
<!-- <artifactId>maven-source-plugin</artifactId>--> | |||
<!-- <executions>--> | |||
<!-- <execution>--> | |||
<!-- <id>attach-sources</id>--> | |||
<!-- <phase>verify</phase>--> | |||
<!-- <goals>--> | |||
<!-- <goal>jar-no-fork</goal>--> | |||
<!-- </goals>--> | |||
<!-- </execution>--> | |||
<!-- </executions>--> | |||
<!-- </plugin>--> | |||
<!-- 用于生成jar包的plugin --> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-jar-plugin</artifactId> | |||
<version>2.6</version> | |||
<configuration> | |||
<excludes> | |||
<exclude>config/*.yaml</exclude> | |||
</excludes> | |||
</configuration> | |||
</plugin> | |||
</plugins> | |||
</build> | |||
<distributionManagement> | |||
<repository> | |||
<id>nexus-releases</id> | |||
<name>Nexus Release Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-releases/</url> | |||
</repository> | |||
<snapshotRepository> | |||
<id>nexus-snapshots</id> | |||
<name>Nexus Snapshot Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-snapshots/</url> | |||
</snapshotRepository> | |||
</distributionManagement> | |||
</project> |
@@ -1,19 +0,0 @@ | |||
package cc.smtweb.framework.file; | |||
import cc.smtweb.framework.core.db.jdbc.JdbcEngine; | |||
/** | |||
* 文件服务帮助类 | |||
* @author admin | |||
*/ | |||
public class FileHelper { | |||
private FileHelper() { | |||
} | |||
/** | |||
* 业务已经采用文件,文件服务需要删除文件记录,避免定时任务清除文件 | |||
* @param fileId 文件服务上传时提供的文件ID | |||
*/ | |||
public static void commit(JdbcEngine dbEngine, long fileId) { | |||
} | |||
} |
@@ -1,134 +0,0 @@ | |||
package cc.smtweb.framework.file; | |||
import java.text.SimpleDateFormat; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import cc.smtweb.framework.file.util.FileDynPath; | |||
import cc.smtweb.framework.file.util.FileFixPath; | |||
import lombok.Getter; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.apache.tika.mime.MimeType; | |||
import org.apache.tika.mime.MimeTypeException; | |||
import org.apache.tika.mime.MimeTypes; | |||
import org.springframework.web.multipart.MultipartFile; | |||
import cc.smtweb.framework.core.db.jdbc.IdGenerator; | |||
/** | |||
* 文件名生成规则 subDir/[yyyymm]/[d]/[hex(fileid)]_[hex(rand)].[fileExt] 如果文件是图片格式,会生成缩略图,文件名会直接添加.thumb.jpg后缀 规则参数 yyyymm: | |||
* 时间的年月,固定6位字符。如200505 d: 时间的日期,值范围1~31。如5 fileid: 上传文件的ID,hex(int64) rand: 防盗链随机数,hex(int32)。 fileExt: 文件扩展名。 | |||
*/ | |||
@Slf4j | |||
public class FilePathGenerator { | |||
public static final String THUMB_FILE_EXT = ".thumb.jpg"; | |||
// 文件时间是否作为PK | |||
private SimpleDateFormat sdf; | |||
@Getter | |||
private String rootPath; | |||
private Map<String, FileFixPath> fileFxPathMap = new HashMap<>(); | |||
private Map<String, FileDynPath> fileDynPathMap = new HashMap<>(); | |||
private String fileUrl; | |||
private IdGenerator idGenerator; | |||
public FilePathGenerator(String rootPath, String fileUrl, IdGenerator idGenerator) { | |||
this.fileUrl = fixEnd(fileUrl); | |||
this.idGenerator = idGenerator; | |||
this.rootPath = fixEnd(rootPath); | |||
sdf = new SimpleDateFormat("yyyyMM/dd/"); | |||
} | |||
private static String fixEnd(String path) { | |||
if (path.endsWith("/") || path.endsWith("\\")) { | |||
return path; | |||
} else { | |||
return path + "/"; | |||
} | |||
} | |||
/** | |||
* 生成文件路径,根据日期分目录存储 | |||
* | |||
* @param subPath 子目录,区分不同应用的文件 | |||
* @param originalFileName 原始的文件名,用于提取扩展名用 | |||
* @return 文件路径信息类 | |||
*/ | |||
public FilePathInfo make(String subPath, String originalFileName) { | |||
return make(subPath, originalFileName, null, false); | |||
} | |||
public FilePathInfo make(String subPath, String originalFileName, boolean keepName) { | |||
return make(subPath, originalFileName, null, keepName); | |||
} | |||
/** | |||
* 生成文件路径,根据日期分目录存储 | |||
* | |||
* @param subPath 子目录,区分不同应用的文件 | |||
* @param multipartFile 上传文件流,用于提取扩展名用 | |||
* @return 文件路径信息类 | |||
*/ | |||
public FilePathInfo make(String subPath, MultipartFile multipartFile) { | |||
return make(subPath, multipartFile.getOriginalFilename(), multipartFile.getContentType(), false); | |||
} | |||
private synchronized FilePathInfo make(String subPath, String originFileName, String contentType, boolean keepName) { | |||
if (keepName) { | |||
FileFixPath filePathSub = fileFxPathMap.get(subPath); | |||
if (filePathSub == null) { | |||
filePathSub = new FileFixPath(this.rootPath, subPath); | |||
fileFxPathMap.put(subPath, filePathSub); | |||
} | |||
return filePathSub.makeDatePath(this.idGenerator.nextId(), originFileName); | |||
} else { | |||
FileDynPath filePathSub = fileDynPathMap.get(subPath); | |||
if (filePathSub == null) { | |||
filePathSub = new FileDynPath(this.rootPath, subPath, sdf); | |||
fileDynPathMap.put(subPath, filePathSub); | |||
} | |||
return filePathSub.makeDatePath(this.idGenerator.nextId(), ext(originFileName, contentType)); | |||
} | |||
} | |||
private static String ext(String filename, String contentType) { | |||
int index = filename.lastIndexOf("."); | |||
if (index == -1) { | |||
if (contentType != null) { | |||
MimeTypes allTypes = MimeTypes.getDefaultMimeTypes(); | |||
try { | |||
MimeType jpeg = allTypes.forName(contentType); | |||
return jpeg.getExtension(); | |||
} catch (MimeTypeException e) { | |||
log.error(contentType, e); | |||
} | |||
} | |||
return ""; | |||
} | |||
return filename.substring(index); | |||
} | |||
// 根据数据库存储文件路径获取URL | |||
public String getFileUrl(FilePathInfo filePathInfo) { | |||
return this.fileUrl + filePathInfo.getMysqlFilePath(); | |||
} | |||
// 根据数据库存储文件路径获取URL | |||
public String getFileUrl(String mysqlFilePath) { | |||
return this.fileUrl + mysqlFilePath; | |||
} | |||
// 根据数据库存储文件路径获取磁盘存储路径 | |||
public String getFileDiskPath(String mysqlFilePath) { | |||
return this.rootPath + mysqlFilePath; | |||
} | |||
// 获取下载路径前缀 | |||
public String getDownloadUrl() { | |||
return this.fileUrl; | |||
} | |||
} |
@@ -1,48 +0,0 @@ | |||
package cc.smtweb.framework.file; | |||
import lombok.Getter; | |||
/** | |||
* 数据库需要存储 | |||
* fileId, fileTime, subPath + fileName | |||
*/ | |||
@Getter | |||
public class FilePathInfo { | |||
// 文件ID | |||
private long fileId; | |||
// 文件创建时间,数据库需要存储 | |||
private long fileTime; | |||
// 文件子路径 | |||
private String subPath; | |||
// 文件名 | |||
private String fileName; | |||
// 本地根路径 | |||
private String rootPath; | |||
public FilePathInfo(String rootPath, String subPath, long fileTime, String fileName, long fileId) { | |||
this.rootPath = rootPath; | |||
this.subPath = subPath; | |||
this.fileTime = fileTime; | |||
this.fileName = fileName; | |||
this.fileId = fileId; | |||
} | |||
/** | |||
* 获取本地需要存储的文件全路径 | |||
*/ | |||
public String getFullFileName() { | |||
return getDiskFilePath(); | |||
} | |||
public String getDiskFilePath() { | |||
return this.rootPath + subPath + fileName; | |||
} | |||
/** | |||
* 获取数据库存储需要的文件全路径 | |||
*/ | |||
public String getMysqlFilePath() { | |||
return subPath + fileName; | |||
} | |||
} |
@@ -1,15 +0,0 @@ | |||
package cc.smtweb.framework.file.spring; | |||
import org.springframework.boot.SpringApplication; | |||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||
/** | |||
* @author kevin | |||
*/ | |||
@SpringBootApplication | |||
public class | |||
FileApplication { | |||
public static void main(String[] args) { | |||
SpringApplication.run(FileApplication.class, args); | |||
} | |||
} |
@@ -1,21 +0,0 @@ | |||
package cc.smtweb.framework.file.spring; | |||
import cc.smtweb.framework.core.mvc.config.ControllerConfig; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.ComponentScan; | |||
import org.springframework.context.annotation.Configuration; | |||
/** | |||
* @author kevin | |||
*/ | |||
@Configuration | |||
@ComponentScan | |||
public class FileAutoConfiguration { | |||
/** 配置自定义service扫描路径 {module}/{service}/{method} */ | |||
@Bean | |||
public ControllerConfig fileControllerConfig() { | |||
return new ControllerConfig("file", "cc.smtweb.framework.file.web"); | |||
} | |||
} |
@@ -1,26 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.config; | |||
import cc.smtweb.framework.file.FilePathGenerator; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.Configuration; | |||
import cc.smtweb.framework.core.db.jdbc.IdGenerator; | |||
/** | |||
* 微服务框架封装自动配置类 | |||
*/ | |||
@Configuration | |||
public class FileConfig { | |||
// 文件本地存储配置 | |||
@Value("${smtweb.file.local-path}") | |||
private String fileLocalPath; | |||
// 文件请求URL路径配置 http://127.0.0.1:${server.port}/${server.servlet.context-path}/files/ | |||
@Value("${smtweb.file.url}") | |||
private String fileUrl; | |||
@Bean | |||
public FilePathGenerator filePathGenerator(IdGenerator idGenerator) { | |||
return new FilePathGenerator(fileLocalPath, fileUrl, idGenerator); | |||
} | |||
} |
@@ -1,185 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.controller; | |||
import cc.smtweb.framework.core.cache.redis.RedisManager; | |||
import cc.smtweb.framework.core.session.SessionUtil; | |||
import cc.smtweb.framework.file.FilePathGenerator; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.apache.commons.lang3.time.DateUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.core.io.InputStreamResource; | |||
import org.springframework.http.*; | |||
import org.springframework.web.bind.annotation.*; | |||
import javax.servlet.http.HttpServletRequest; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileNotFoundException; | |||
import java.io.InputStream; | |||
import java.nio.charset.StandardCharsets; | |||
import java.time.Instant; | |||
import java.util.concurrent.TimeUnit; | |||
@RestController | |||
public class FileDownloadController { | |||
private static final MediaType APPLICATION_JAVASCRIPT = new MediaType("application", "javascript"); | |||
@Value("${smtweb.static.local-path:}") | |||
private String staticLocalPath; | |||
@Autowired | |||
private FilePathGenerator filePathGenerator; | |||
@Autowired | |||
private RedisManager redisManager; | |||
/** path方式下载文件 */ | |||
@GetMapping("/fs/files/**") | |||
public ResponseEntity<InputStreamResource> files(@RequestParam(value="name", required=false) String name, | |||
@RequestParam(value="noCache", required=false) Boolean noCache, | |||
HttpServletRequest request | |||
) throws FileNotFoundException { | |||
String filePath = request.getRequestURI().substring(10); | |||
return download(filePath, name, noCache, request); | |||
} | |||
/** 参数方式下载文件 */ | |||
@GetMapping("/fs/download") | |||
public ResponseEntity<InputStreamResource> download(@RequestParam(value="path") String path, | |||
@RequestParam(value="name", required=false) String name, | |||
@RequestParam(value="noCache", required=false) Boolean noCache, | |||
HttpServletRequest request | |||
) throws FileNotFoundException { | |||
SessionUtil.checkSession(request, redisManager); | |||
File file = new File(filePathGenerator.getFileDiskPath(path)); | |||
if (!file.exists()) { | |||
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); | |||
} | |||
if (StringUtils.isBlank(name)) { | |||
name = file.getName(); | |||
} | |||
HttpHeaders headers = new HttpHeaders(); | |||
if (Boolean.TRUE.equals(noCache)) { | |||
headers.setCacheControl("no-cache, no-store, must-revalidate"); | |||
headers.setPragma("no-cache"); | |||
headers.setExpires(0); | |||
} | |||
headers.setLastModified(file.lastModified()); | |||
headers.add("Content-Disposition", | |||
String.format("attachment; filename=\"%s\"", new String(name.getBytes(StandardCharsets.UTF_8),StandardCharsets.ISO_8859_1))); | |||
return ResponseEntity.ok() | |||
.headers(headers) | |||
.contentLength(file.length()) | |||
.contentType(MediaType.APPLICATION_OCTET_STREAM) | |||
.body(new InputStreamResource(new FileInputStream(file))); | |||
} | |||
/** path方式读取静态目录文件 */ | |||
@GetMapping("/fs/static/**") | |||
public ResponseEntity<InputStreamResource> resource(@RequestParam(value="default", required=false) String defaultPath, | |||
@RequestParam(value="noCache", required=false) Boolean noCache, | |||
@RequestHeader(value="If-Modified-Since", required = false) String ifModifiedSince, | |||
HttpServletRequest request) throws FileNotFoundException { | |||
String filePath = request.getRequestURI().substring(11); | |||
HttpHeaders headers = new HttpHeaders(); | |||
if (Boolean.TRUE.equals(noCache)) { | |||
headers.setCacheControl("no-cache, no-store, must-revalidate"); | |||
headers.setPragma("no-cache"); | |||
headers.setExpires(0); | |||
} else { | |||
// 暂时缓存1天 | |||
headers.setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)); | |||
headers.setExpires(Instant.ofEpochMilli(System.currentTimeMillis() + DateUtils.MILLIS_PER_DAY)); | |||
} | |||
String name = getFileName(filePath); | |||
headers.add("Content-Disposition", | |||
String.format("attachment; filename=\"%s\"", new String(name.getBytes(StandardCharsets.UTF_8),StandardCharsets.ISO_8859_1))); | |||
MediaType contentType = getContentType(filePath); | |||
// 先找文件 | |||
if (StringUtils.isNotBlank(staticLocalPath)) { | |||
File file = new File(staticLocalPath + filePath); | |||
if (file.exists()) { | |||
headers.setLastModified(file.lastModified()); | |||
return ResponseEntity.ok() | |||
.headers(headers) | |||
.contentLength(file.length()) | |||
.contentType(contentType) | |||
.body(new InputStreamResource(new FileInputStream(file))); | |||
} | |||
} | |||
// 再找资源目录 | |||
InputStream inputStream = getClass().getResourceAsStream("/static/" + filePath); | |||
if (inputStream != null) { | |||
return buildResource(inputStream, contentType, headers); | |||
} else if (StringUtils.isNotBlank(defaultPath)) { | |||
inputStream = getClass().getResourceAsStream("/static/" + defaultPath); | |||
if (inputStream != null) { | |||
return buildResource(inputStream, contentType, headers); | |||
} | |||
} | |||
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); | |||
} | |||
private String getFileName(String filePath) { | |||
int pos = filePath.lastIndexOf("/"); | |||
if (pos >= 0) { | |||
return filePath.substring(pos + 1); | |||
} | |||
return filePath; | |||
} | |||
private ResponseEntity<InputStreamResource> buildResource(InputStream inputStream, MediaType contentType, HttpHeaders headers) { | |||
return ResponseEntity.ok() | |||
.headers(headers) | |||
// .contentLength(file.length()) | |||
.contentType(contentType) | |||
.body(new InputStreamResource(inputStream)); | |||
} | |||
private static MediaType getContentType(String filePath) { | |||
int pos = filePath.lastIndexOf("."); | |||
if (pos >= 0) { | |||
String fileExt = filePath.substring(pos + 1).toLowerCase(); | |||
switch (fileExt) { | |||
case "htm": | |||
case "html": | |||
case "css": | |||
return MediaType.TEXT_HTML; | |||
case "js": | |||
return APPLICATION_JAVASCRIPT; | |||
case "txt": | |||
return MediaType.TEXT_PLAIN; | |||
case "pdf": | |||
return MediaType.APPLICATION_PDF; | |||
case "xml": | |||
return MediaType.TEXT_XML; | |||
case "gif": | |||
return MediaType.IMAGE_GIF; | |||
case "jpeg": | |||
case "jpg": | |||
return MediaType.IMAGE_JPEG; | |||
case "png": | |||
return MediaType.IMAGE_PNG; | |||
default: | |||
return MediaType.APPLICATION_OCTET_STREAM; | |||
} | |||
} | |||
return MediaType.APPLICATION_OCTET_STREAM; | |||
} | |||
} |
@@ -1,157 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.controller; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.db.DbEngine; | |||
import cc.smtweb.framework.core.cache.redis.RedisManager; | |||
import cc.smtweb.framework.core.session.SessionUtil; | |||
import cc.smtweb.framework.file.FilePathGenerator; | |||
import cc.smtweb.framework.file.FilePathInfo; | |||
import cc.smtweb.framework.file.spring.dao.ImageAttachDao; | |||
import cc.smtweb.framework.file.spring.entity.FileDataVO; | |||
import cc.smtweb.framework.file.spring.entity.UploadDataVO; | |||
import cc.smtweb.framework.file.util.MemMultipartFile; | |||
import cc.smtweb.framework.file.util.ThumbImage; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.util.FileCopyUtils; | |||
import org.springframework.web.bind.annotation.*; | |||
import org.springframework.web.multipart.MultipartFile; | |||
import javax.servlet.http.HttpServletRequest; | |||
import java.io.*; | |||
import java.sql.Timestamp; | |||
import java.text.SimpleDateFormat; | |||
@RestController | |||
public class FileUploadController { | |||
@Autowired | |||
private FilePathGenerator filePathGenerator; | |||
@Autowired | |||
private DbEngine dbEngine; | |||
@Autowired | |||
private RedisManager redisManager; | |||
@Autowired | |||
private ImageAttachDao imageAttachDao; | |||
// TODO: 权限处理,临时文件处理 | |||
@PostMapping("/fs/upload/{path}") | |||
public R upload(@RequestParam("file") MultipartFile file, @PathVariable("path") String path, | |||
@RequestParam(value="thumb", required=false) String thumb, | |||
@RequestParam(value="thumbHeight", required=false) Integer thumbHeight, | |||
@RequestParam(value="commit", required=false) Boolean insert, | |||
@RequestParam(value="keepName", required=false) Boolean keepName, | |||
HttpServletRequest request | |||
) { | |||
SessionUtil.checkSession(request, redisManager); | |||
return uploadFile(path, file, ThumbImage.type(thumb), thumbHeight, insert, keepName); | |||
} | |||
@PostMapping("/fs/uploadImage/{path}") | |||
public R upload(@RequestBody FileDataVO data, @PathVariable("path") String path, | |||
@RequestParam(value="thumb", required=false) String thumb, | |||
@RequestParam(value="thumbHeight", required=false) Integer thumbHeight, | |||
@RequestParam(value="commit", required=false) Boolean insert, | |||
HttpServletRequest request) { | |||
SessionUtil.checkSession(request, redisManager); | |||
MultipartFile file = MemMultipartFile.build(data.getData()); | |||
if (file == null) { | |||
return R.error("数据内容格式有错"); | |||
} | |||
return uploadFile(path, file, ThumbImage.type(thumb), thumbHeight, insert, false); | |||
} | |||
@PostMapping("/fs/uploadAvatar/{path}") | |||
public R uploadAvatar(@RequestParam("file") MultipartFile file, @PathVariable("path") String path, | |||
@RequestParam(value="size", required=false) Integer size, | |||
@RequestParam(value="commit", required=false) Boolean insert, | |||
@RequestParam(value="keepName", required=false) Boolean keepName, | |||
HttpServletRequest request) { | |||
SessionUtil.checkSession(request, redisManager); | |||
return uploadFile(path, file, ThumbImage.TYPE_AVATAR, size, insert, keepName); | |||
} | |||
// 保存文件和插入数据库数据 | |||
@PostMapping("/fs/commit/{path}") | |||
public R commit(@RequestParam("file") MultipartFile file, @PathVariable("path") String path, | |||
@RequestParam(value="thumb", required=false) String thumb, | |||
@RequestParam(value="thumbHeight", required=false) Integer thumbHeight, | |||
@RequestParam(value="keepName", required=false) Boolean keepName, | |||
HttpServletRequest request) { | |||
SessionUtil.checkSession(request, redisManager); | |||
return uploadFile(path, file, ThumbImage.type(thumb), thumbHeight, true, keepName); | |||
} | |||
private R uploadFile(String path, MultipartFile file, int type, Integer size, Boolean insert, Boolean keepName) { | |||
//获取上传时的文件名 | |||
String fileName = file.getOriginalFilename(); | |||
//判断文件是否为空 | |||
if(file.isEmpty() && fileName != null){ | |||
return R.error("文件为空"); | |||
} | |||
// 判断保持文件名不变 | |||
FilePathInfo fileInfo = filePathGenerator.make(path, fileName, Boolean.TRUE.equals(keepName)); | |||
// 注意是路径+文件名 | |||
File targetFile = new File(fileInfo.getFullFileName()); | |||
try(InputStream inputStream = file.getInputStream(); OutputStream outputStream = new FileOutputStream(targetFile)) { | |||
// 最后使用资源访问器FileCopyUtils的copy方法拷贝文件 | |||
FileCopyUtils.copy(inputStream, outputStream); | |||
} catch (IOException e) { | |||
//出现异常,则告诉页面失败 | |||
return R.error("上传失败", e); | |||
} | |||
// 生成缩略图 | |||
// String contentType = file.getContentType(); | |||
UploadDataVO data = new UploadDataVO(); | |||
data.setPath(fileInfo.getMysqlFilePath()); | |||
data.setName(fileName); | |||
data.setSize(file.getSize()); | |||
data.setContentType(file.getContentType()); | |||
data.setUrl(filePathGenerator.getFileUrl(fileInfo.getMysqlFilePath())); | |||
if (type == ThumbImage.TYPE_THUMB || type == ThumbImage.TYPE_AVATAR) { | |||
try { | |||
imageAttachDao.makeThumb(data, type == ThumbImage.TYPE_THUMB, targetFile, size); | |||
} catch (IOException e) { | |||
return R.error("生成缩略图失败", e); | |||
} | |||
} | |||
if (Boolean.TRUE.equals(insert)) { | |||
Long id = dbEngine.nextId(); | |||
Timestamp now = new Timestamp(System.currentTimeMillis()); | |||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); | |||
dbEngine.update("insert into sw_user.sys_attach(attach_id, attach_name, attach_path, attach_content_type, attach_size, attach_create_time) values(?, ?, ?, ?, ?, ?)", | |||
id, data.getName(), data.getPath(), data.getContentType(), data.getSize(), sdf.format(now)); | |||
data.setId(id); | |||
} | |||
return R.success(data); | |||
} | |||
// TODO: 修改为安全的后台删除方式 | |||
@PostMapping("/fs/remove") | |||
public R remove(@RequestParam(value="filePath") String filePath, HttpServletRequest request) { | |||
SessionUtil.checkSession(request, redisManager); | |||
File file = new File(filePathGenerator.getFileDiskPath(filePath)); | |||
if (file.exists() && file.isFile()) { | |||
if (file.delete()) { | |||
R.success(filePath); | |||
} | |||
} | |||
return R.success(); | |||
} | |||
} |
@@ -1,63 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.dao; | |||
import cc.smtweb.framework.file.spring.entity.UploadDataVO; | |||
import cc.smtweb.framework.file.util.ThumbImage; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.springframework.stereotype.Service; | |||
import java.io.File; | |||
import java.io.IOException; | |||
@Service | |||
public class ImageAttachDao { | |||
public static final String APPLICATION_OCTET_STREAM = "application/octet-stream"; | |||
public void makeThumb(UploadDataVO data, boolean isThumb, File targetFile, Integer size) throws IOException { | |||
boolean imageType = false; | |||
String fileName = data.getName(); | |||
String contentType = data.getContentType(); | |||
if (contentType.startsWith("image/")) { | |||
imageType = true; | |||
} else if (contentType.equals(APPLICATION_OCTET_STREAM)) { | |||
String fileExt = fileName.substring(fileName.lastIndexOf(".")); | |||
if (StringUtils.isNotEmpty(fileExt)) { | |||
switch (fileExt.toLowerCase()) { | |||
case ".jpg": | |||
case ".jpeg": | |||
contentType = "image/jpg"; | |||
imageType = true; | |||
break; | |||
case ".gif": | |||
contentType = "image/gif"; | |||
imageType = true; | |||
break; | |||
case ".png": | |||
contentType = "image/png"; | |||
imageType = true; | |||
break; | |||
default: | |||
break; | |||
} | |||
if (imageType) { | |||
data.setContentType(contentType); | |||
} | |||
} | |||
} | |||
if (imageType) { | |||
int thumbHeight = 80; | |||
if (size != null) { | |||
thumbHeight = (size > 500) ? 500 : size; | |||
} | |||
ThumbImage thumbImage = new ThumbImage(); | |||
thumbImage.makeThumb(isThumb, targetFile, thumbHeight); | |||
data.setWidth(thumbImage.getImageWidth()); | |||
data.setHeight(thumbImage.getImageHeight()); | |||
} | |||
} | |||
} |
@@ -1,114 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.dao; | |||
import cc.smtweb.framework.core.db.DbEngine; | |||
import cc.smtweb.framework.file.FilePathGenerator; | |||
import cc.smtweb.framework.file.web.entity.AttachPathPO; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.yaml.snakeyaml.util.UriEncoder; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
@Service | |||
public class SysAttachDao { | |||
@Autowired | |||
private FilePathGenerator filePathGenerator; | |||
@Autowired | |||
private DbEngine dbEngine; | |||
/** | |||
* 获取文件本地文件路径 | |||
* | |||
* @param filePath 相对路径 | |||
* @return 本地文件全路径 | |||
*/ | |||
public String getDiskPath(String filePath) { | |||
return filePathGenerator.getFileDiskPath(filePath); | |||
} | |||
/** | |||
* 获取访问文件的URL地址 | |||
* | |||
* @param filePath 文件相对路径 | |||
* @return 文件URL地址 | |||
*/ | |||
public String getFileUrl(String filePath) { | |||
return filePathGenerator.getFileUrl(filePath); | |||
} | |||
/** | |||
* 获取访问文件的URL地址 | |||
* | |||
* @param filePath 文件相对路径 | |||
* @param filePath 文件名 | |||
* @return 文件URL地址 | |||
*/ | |||
public String getFileUrl(String filePath, String fileName) { | |||
return "/fs/download?path=" + UriEncoder.encode(filePath) + "&name=" + UriEncoder.encode(fileName); | |||
} | |||
public AttachPathPO get(Long id) { | |||
if (id != null) { | |||
return dbEngine.queryEntity("select attach_id, attach_name, attach_path, attach_content_type, attach_size, attach_create_time from sw_user.sys_attach where attach_id=?", | |||
AttachPathPO.class, id); | |||
} | |||
return null; | |||
} | |||
// 删除文件记录和文件 | |||
public void remove(Long fileId) { | |||
// if (id != null) { | |||
// return dbEngine.queryEntity("select attach_id, attach_name, attach_path, attach_content_type, attach_size, attach_create_time from sw_user.sys_attach where attach_id=?", | |||
// AttachPathPO.class, id); | |||
// } | |||
// | |||
// return null; | |||
} | |||
// 删除文件 | |||
public void remove(String filePath) { | |||
// if (id != null) { | |||
// return dbEngine.queryEntity("select attach_id, attach_name, attach_path, attach_content_type, attach_size, attach_create_time from sw_user.sys_attach where attach_id=?", | |||
// AttachPathPO.class, id); | |||
// } | |||
// | |||
// return null; | |||
} | |||
public List<AttachPathPO> list(Long[] ids) { | |||
if (ids != null && ids.length > 0) { | |||
return dbEngine.query("select attach_id, attach_name, attach_path, attach_content_type, attach_size, attach_create_time from sw_user.sys_attach where attach_id in( " | |||
+ StringUtils.join(ids, ",") + ")", | |||
AttachPathPO.class); | |||
} | |||
return null; | |||
} | |||
public Map<Long, AttachPathPO> map(Long[] ids) { | |||
List<AttachPathPO> list = list(ids); | |||
if (list != null && !list.isEmpty()) { | |||
Map<Long, AttachPathPO> map = new HashMap<>(list.size()); | |||
list.forEach((item) -> map.put(item.getAttachId(), item)); | |||
return map; | |||
} | |||
return null; | |||
} | |||
// 保持文件,删除临时文件记录,避免被定时删除 | |||
public void retain(String filePath) { | |||
} | |||
// 保持文件,删除临时文件记录,避免被定时删除 | |||
public void retain(Long fileId) { | |||
} | |||
} |
@@ -1,8 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.entity; | |||
import lombok.Data; | |||
@Data | |||
public class FileDataVO { | |||
private String data; | |||
} |
@@ -1,15 +0,0 @@ | |||
package cc.smtweb.framework.file.spring.entity; | |||
import lombok.Data; | |||
@Data | |||
public class UploadDataVO { | |||
private Long id; | |||
private Integer height; | |||
private Integer width; | |||
private long size; | |||
private String path; | |||
private String name; | |||
private String contentType; | |||
private String url; | |||
} |
@@ -1,107 +0,0 @@ | |||
package cc.smtweb.framework.file.util; | |||
import cc.smtweb.framework.core.util.DateUtil; | |||
import cc.smtweb.framework.file.FilePathInfo; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.apache.commons.lang3.time.DateUtils; | |||
import java.io.File; | |||
import java.sql.Timestamp; | |||
import java.text.SimpleDateFormat; | |||
import java.util.Random; | |||
/** | |||
* 动态文件〈文件路径〉 | |||
* | |||
* @author kevin | |||
* @since 1.0.0 | |||
*/ | |||
@Slf4j | |||
public class FileDynPath extends FileFixPath { | |||
// 目录允许的最大文件数量,避免批量导入文件时文件太多 | |||
private static final int MAX_FILE_COUNT = 2000; | |||
private static final int MAX_DIR_COUNT = 100000; | |||
private long startTime; | |||
private long endTime; | |||
private final SimpleDateFormat sdf; | |||
// 文件数量 | |||
private int fileCount; | |||
// 目录子索引 | |||
private int pathIndex; | |||
public FileDynPath(String rootPath, String typeDir, SimpleDateFormat sdf) { | |||
super(rootPath, typeDir); | |||
this.sdf = sdf; | |||
} | |||
/** | |||
* 返回日期路径字符串 | |||
*/ | |||
@Override | |||
public FilePathInfo makeDatePath(long fileId, String fileExt) { | |||
long now = System.currentTimeMillis(); | |||
String fileName; | |||
// 如果不在就需要重新创建子目录 | |||
if (now < startTime || now >= endTime) { | |||
startTime = DateUtil.getTimesmorning(now); | |||
endTime = startTime + DateUtils.MILLIS_PER_DAY; | |||
this.path = this.typeDir + "/" + sdf.format(new Timestamp(now)); | |||
createFolder(rootPath + this.path); | |||
} | |||
// 如果文件数量太大就需要创建新子目录 | |||
while (this.fileCount >= MAX_FILE_COUNT) { | |||
this.pathIndex++; | |||
if(this.pathIndex > MAX_DIR_COUNT) { | |||
throw new RuntimeException("dir is two many"); | |||
} | |||
createFolder(rootPath + getSubPath()); | |||
} | |||
Random random = new Random(); | |||
int randomId = random.nextInt(Integer.MAX_VALUE); | |||
fileName = Long.toHexString(fileId) + "_" + Integer.toHexString(randomId) + fileExt; | |||
return new FilePathInfo(rootPath, getSubPath(), now, fileName, fileId); | |||
} | |||
private String getSubPath() { | |||
if (this.pathIndex > 0) { | |||
return String.format("%s%02d/%04d", this.path, MAX_DIR_COUNT / 1000, this.pathIndex % 1000); | |||
} | |||
return this.path; | |||
} | |||
private boolean createFolder(String path) { | |||
File file = new File(path); | |||
if (file.exists()) { | |||
if (!file.isDirectory()) { | |||
return false; | |||
} | |||
File[] list = file.listFiles(); | |||
if (list != null) { | |||
this.fileCount = list.length; | |||
} else { | |||
this.fileCount = 0; | |||
} | |||
return true; | |||
} | |||
if (!file.mkdirs()) { | |||
log.error("unable to create folders {}.", rootPath + this.path); | |||
return false; | |||
} | |||
log.debug("create folders {}.", file); | |||
this.fileCount = 0; | |||
return true; | |||
} | |||
} |
@@ -1,52 +0,0 @@ | |||
package cc.smtweb.framework.file.util; | |||
import cc.smtweb.framework.file.FilePathInfo; | |||
import lombok.extern.slf4j.Slf4j; | |||
import java.io.File; | |||
/** | |||
* 〈文件路径〉 | |||
* | |||
* @author kevin | |||
* @since 1.0.0 | |||
*/ | |||
@Slf4j | |||
public class FileFixPath { | |||
protected String path; | |||
protected String rootPath; | |||
protected String typeDir; | |||
public FileFixPath(String rootPath, String typeDir) { | |||
this.rootPath = rootPath; | |||
this.typeDir = typeDir; | |||
} | |||
public FilePathInfo makeDatePath(long fileId, String fileName) { | |||
long now = System.currentTimeMillis(); | |||
this.path = this.typeDir + "/"; | |||
createFolder(rootPath + this.path); | |||
return new FilePathInfo(rootPath, this.path, now, fileName, fileId); | |||
} | |||
private boolean createFolder(String path) { | |||
File file = new File(path); | |||
if (file.exists()) { | |||
if (!file.isDirectory()) { | |||
return false; | |||
} | |||
return true; | |||
} | |||
if (!file.mkdirs()) { | |||
log.error("unable to create folders {}.", rootPath + this.path); | |||
return false; | |||
} | |||
log.debug("create folders {}.", file); | |||
return true; | |||
} | |||
} |
@@ -1,79 +0,0 @@ | |||
package cc.smtweb.framework.file.util; | |||
import org.apache.commons.codec.binary.Base64; | |||
import org.springframework.web.multipart.MultipartFile; | |||
import java.io.*; | |||
public class MemMultipartFile implements MultipartFile { | |||
private static final String DATA_IMAGE = "data:image/"; | |||
private byte[] data; | |||
private String contentType; | |||
private String filename; | |||
public static MemMultipartFile build(String dataUrl) { | |||
if (dataUrl != null && dataUrl.startsWith(DATA_IMAGE)) { | |||
// data:image/png;base64, | |||
int pos1 = dataUrl.indexOf(';', DATA_IMAGE.length()); | |||
int pos2 = dataUrl.indexOf(',', DATA_IMAGE.length()); | |||
if (pos1 > 0 && pos2 > pos1) { | |||
byte[] data = Base64.decodeBase64(dataUrl.substring(pos2)); | |||
if (data != null) { | |||
String contentType = dataUrl.substring(5, pos1); | |||
return new MemMultipartFile(contentType.replace('/', '.'), contentType, data); | |||
} | |||
} | |||
} | |||
return null; | |||
} | |||
private MemMultipartFile(String filename, String contentType, byte[] data) { | |||
this.data = data; | |||
this.contentType = contentType; | |||
this.filename = filename; | |||
} | |||
@Override | |||
public String getName() { | |||
return "data"; | |||
} | |||
@Override | |||
public String getOriginalFilename() { | |||
return filename; | |||
} | |||
@Override | |||
public String getContentType() { | |||
return contentType; | |||
} | |||
@Override | |||
public boolean isEmpty() { | |||
return data.length == 0; | |||
} | |||
@Override | |||
public long getSize() { | |||
return data.length; | |||
} | |||
@Override | |||
public byte[] getBytes() throws IOException { | |||
return data; | |||
} | |||
@Override | |||
public InputStream getInputStream() throws IOException { | |||
return new ByteArrayInputStream(data); | |||
} | |||
@Override | |||
public void transferTo(File file) throws IOException, IllegalStateException { | |||
try(FileOutputStream os = new FileOutputStream(file)) { | |||
os.write(data); | |||
} | |||
} | |||
} |
@@ -1,111 +0,0 @@ | |||
package cc.smtweb.framework.file.util; | |||
import java.awt.Color; | |||
import java.awt.image.BufferedImage; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.util.List; | |||
import javax.imageio.ImageIO; | |||
import cc.smtweb.framework.file.FilePathGenerator; | |||
import lombok.Getter; | |||
import net.coobird.thumbnailator.Thumbnails; | |||
import net.coobird.thumbnailator.Thumbnails.Builder; | |||
import net.coobird.thumbnailator.geometry.Positions; | |||
import net.coobird.thumbnailator.resizers.configurations.Antialiasing; | |||
import net.sf.image4j.codec.ico.ICODecoder; | |||
import org.apache.commons.lang3.StringUtils; | |||
/** | |||
* 缩略图生成工具 | |||
* @author xkliu | |||
*/ | |||
@Getter | |||
public class ThumbImage { | |||
// 图片处理方式 | |||
public static final int TYPE_DEFAULT = 1; | |||
public static final int TYPE_THUMB = 2; | |||
public static final int TYPE_AVATAR = 3; | |||
private int imageWidth; | |||
private int imageHeight; | |||
public static int type(String thumb) { | |||
// 解决历史遗留boolean类型 | |||
if (StringUtils.isBlank(thumb) || "false".equalsIgnoreCase(thumb)) { | |||
return TYPE_DEFAULT; | |||
} | |||
if ("true".equalsIgnoreCase(thumb)) { | |||
return TYPE_THUMB; | |||
} | |||
return Integer.parseInt(thumb); | |||
} | |||
public void makeThumb(boolean isThumb, File file, int size) throws IOException { | |||
makeThumb(file, size, size, isThumb); | |||
} | |||
// 后台等比压缩后大小最好控制在20k以内 | |||
public void makeThumb(File file, int w, int h, boolean keepAspectRatio) throws IOException { | |||
String fileName = file.getName().toLowerCase(); | |||
BufferedImage image; | |||
if (fileName.endsWith(".ico")) { | |||
List<BufferedImage> images = ICODecoder.read(file); | |||
image = images.get(images.size() - 1); | |||
} else { | |||
image = ImageIO.read(file); | |||
} | |||
imageWidth = image.getWidth(); | |||
imageHeight = image.getHeight(); | |||
if (fileName.endsWith(".png") || fileName.endsWith(".gif")) { | |||
// 把透明的图填充白色背景 | |||
BufferedImage newBufferedImage = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); | |||
newBufferedImage.createGraphics().drawImage(image, 0, 0, Color.WHITE, null); | |||
image = newBufferedImage; | |||
} | |||
Builder<BufferedImage> builder = Thumbnails.of(image); | |||
if (keepAspectRatio) { | |||
if (h > 0) { | |||
// 高度为基准调整宽度到达原图缩放比例 | |||
int imageR = imageWidth * 1000 / imageHeight; | |||
w = h * imageR / 1000; | |||
} else { | |||
// 宽度为基准调整宽度到达原图缩放比例 | |||
int imageR = imageHeight * 1000 / imageWidth; | |||
h = w * imageR / 1000; | |||
} | |||
// int r = w * 1000 / h; | |||
// int imageR = imageWidth * 1000 / imageHeight; | |||
// if (r != imageR) { | |||
// w = imageHeight * r / 1000; | |||
// } | |||
} else { | |||
int r = w * 1000 / h; | |||
int imageR = imageWidth * 1000 / imageHeight; | |||
if (r != imageR) { | |||
int width = imageWidth; | |||
int height = imageHeight; | |||
if (r > imageR) { | |||
width = imageHeight * r / 1000; | |||
} else { | |||
height = imageWidth * 1000 / r; | |||
} | |||
builder.sourceRegion(Positions.CENTER, width, height); | |||
} | |||
} | |||
builder.size(w, h).antialiasing(Antialiasing.ON).outputFormat("jpg").outputQuality(0.9) | |||
.toFile(file.getAbsolutePath() + FilePathGenerator.THUMB_FILE_EXT); | |||
} | |||
} |
@@ -1,13 +0,0 @@ | |||
package cc.smtweb.framework.file.web.entity; | |||
import lombok.Data; | |||
@Data | |||
public class AttachPathPO { | |||
private Long attachId; | |||
private String attachName; | |||
private String attachPath; | |||
private String attachContentType; | |||
private Long attachSize; | |||
private Long attachCreate; | |||
} |
@@ -1,2 +0,0 @@ | |||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ | |||
cc.smtweb.framework.file.spring.FileAutoConfiguration |
@@ -1,2 +0,0 @@ | |||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ | |||
cc.smtweb.framework.file.spring.FileAutoConfiguration |
@@ -1,5 +0,0 @@ | |||
#Generated by Apache Maven | |||
#Tue Nov 02 19:05:00 CST 2021 | |||
version=2.1.0-SNAPSHOT | |||
groupId=cc.smtweb | |||
artifactId=sw-framework-file |
@@ -1,17 +0,0 @@ | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\controller\FileUploadController.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\util\FileDynPath.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\FilePathInfo.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\FileHelper.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\FileAutoConfiguration.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\util\MemMultipartFile.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\dao\SysAttachDao.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\FileApplication.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\FilePathGenerator.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\dao\ImageAttachDao.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\util\FileFixPath.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\config\FileConfig.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\entity\FileDataVO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\util\ThumbImage.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\controller\FileDownloadController.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\spring\entity\UploadDataVO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-file\src\main\java\cc\smtweb\framework\file\web\entity\AttachPathPO.java |
@@ -1,78 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-web</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
<parent> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-parent</artifactId> | |||
<version>2.5.6</version> | |||
<relativePath/> <!-- lookup parent from repository --> | |||
</parent> | |||
<modelVersion>4.0.0</modelVersion> | |||
<dependencies> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-web</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-auth</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-file</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
</dependency> | |||
</dependencies> | |||
<build> | |||
<!-- <finalName>user</finalName>--> | |||
<plugins> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-source-plugin</artifactId> | |||
<executions> | |||
<execution> | |||
<id>attach-sources</id> | |||
<phase>verify</phase> | |||
<goals> | |||
<goal>jar-no-fork</goal> | |||
</goals> | |||
</execution> | |||
</executions> | |||
</plugin> | |||
<!-- 用于生成jar包的plugin --> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-jar-plugin</artifactId> | |||
<version>2.6</version> | |||
<configuration> | |||
<excludes> | |||
<exclude>config/*.yaml</exclude> | |||
</excludes> | |||
</configuration> | |||
</plugin> | |||
</plugins> | |||
</build> | |||
<distributionManagement> | |||
<repository> | |||
<id>nexus-releases</id> | |||
<name>Nexus Release Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-releases/</url> | |||
</repository> | |||
<snapshotRepository> | |||
<id>nexus-snapshots</id> | |||
<name>Nexus Snapshot Repository</name> | |||
<url>http://47.92.149.153:7000/repository/maven-snapshots/</url> | |||
</snapshotRepository> | |||
</distributionManagement> | |||
</project> |
@@ -1,14 +0,0 @@ | |||
package cc.smtweb.framework.web.spring; | |||
import org.springframework.boot.SpringApplication; | |||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||
/** | |||
* @author kevin | |||
*/ | |||
@SpringBootApplication | |||
public class WebApplication { | |||
public static void main(String[] args) { | |||
SpringApplication.run(WebApplication.class, args); | |||
} | |||
} |
@@ -1,20 +0,0 @@ | |||
package cc.smtweb.framework.web.spring; | |||
import cc.smtweb.framework.core.mvc.config.ControllerConfig; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.ComponentScan; | |||
import org.springframework.context.annotation.Configuration; | |||
/** | |||
* @author kevin | |||
*/ | |||
@Configuration | |||
@ComponentScan | |||
public class WebAutoConfiguration { | |||
/** 配置自定义service扫描路径 {module}/{service}/{method} */ | |||
@Bean | |||
public ControllerConfig webControllerConfig() { | |||
return new ControllerConfig("web", "cc.smtweb.framework.web.web"); | |||
} | |||
} |
@@ -1,37 +0,0 @@ | |||
package cc.smtweb.framework.web.web.api; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.annotation.SwParam; | |||
import cc.smtweb.framework.core.annotation.SwPerm; | |||
import cc.smtweb.framework.core.annotation.SwService; | |||
import cc.smtweb.framework.core.db.DbEngine; | |||
import lombok.extern.slf4j.Slf4j; | |||
@Slf4j | |||
@SwService | |||
@SwPerm(SwPerm.NONE) | |||
public class DemoDbService { | |||
// @SwParam | |||
// protected DbCache dbCache; | |||
@SwParam | |||
protected DbEngine dbEngine; | |||
public R get(@SwParam("code") String code) { | |||
// DictPO dictPo = dbCache.entityByCode(DictPO.class, code); | |||
return null;//R.success(dictPo); | |||
} | |||
public R trans(@SwParam("code") String code) { | |||
// dbEngine.doTrans(() -> { | |||
// dbEngine.update("insert into sw_im.im_site(site_id, site_name, site_secret_part) values(?,?,?)", 10, "test", "test"); | |||
// | |||
// dbEngine.update("insert into sw_im_log.im_web_socket_log(wsl_id, wsl_user_id, wsl_client_type) values(?,?,?)", 10, 1000, 0); | |||
// return true; | |||
// }); | |||
dbEngine.queryInt("select 1"); | |||
return R.success(); | |||
} | |||
} |
@@ -1,58 +0,0 @@ | |||
package cc.smtweb.framework.web.web.api; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.annotation.*; | |||
import cc.smtweb.framework.core.mvc.SchedulerManager; | |||
import cc.smtweb.framework.core.mvc.scheduler.SchedulerPoint; | |||
import cc.smtweb.framework.core.cache.redis.RedisManager; | |||
import cc.smtweb.framework.core.util.DateUtil; | |||
import lombok.extern.slf4j.Slf4j; | |||
@Slf4j | |||
@SwService | |||
@SwPerm(SwPerm.NONE) | |||
public class DemoTimerService { | |||
@SwParam | |||
private RedisManager redisManager; | |||
@SwParam | |||
private SchedulerManager schedulerManager; | |||
// defaultRun 命名的函数是默认函数 | |||
public R defaultRun(@SwPathParam String path) { | |||
return R.success(path); | |||
} | |||
public R redis(@SwParam("time") int time) { | |||
boolean value = schedulerManager.wakeup(DemoTimerService.class, "timer3"); | |||
return R.success(value); | |||
} | |||
// @SwScheduling(value = "*/10 * * * * ?", group = "web-timer") | |||
public void timer1(SchedulerPoint schedulerPoint) throws InterruptedException { | |||
String now = DateUtil.nowDateTime(); | |||
System.out.printf("timer 1: %s start\n", now); | |||
Thread.sleep(30 * 1000); | |||
now = DateUtil.nowDateTime(); | |||
System.out.printf("timer 1: %s end\n", now); | |||
schedulerPoint.put("id", now); | |||
} | |||
// @SwScheduling(value = "*/10 * * * * ?", group = "web-timer") | |||
public void timer2(SchedulerPoint schedulerPoint) { | |||
String now = DateUtil.nowDateTime(); | |||
System.out.printf("timer 2: %s\n", now); | |||
schedulerPoint.put("time", now); | |||
} | |||
// @SwScheduling(value = "*/10 * * * * ?") | |||
public void timer3() { | |||
System.out.printf("timer 3: %s\n", DateUtil.nowDateTime()); | |||
} | |||
} |
@@ -1,19 +0,0 @@ | |||
package cc.smtweb.framework.web.web.dao; | |||
import cc.smtweb.framework.core.annotation.*; | |||
import cc.smtweb.framework.core.mvc.scheduler.SchedulerPoint; | |||
import cc.smtweb.framework.core.util.DateUtil; | |||
import lombok.extern.slf4j.Slf4j; | |||
@Slf4j | |||
@SwBean | |||
public class TimerDao { | |||
// @SwScheduling(value = "*/10 * * * * ?") | |||
public void timer(SchedulerPoint schedulerPoint) { | |||
String now = DateUtil.nowDateTime(); | |||
System.out.printf("dao timer: %s\n", now); | |||
schedulerPoint.put("time", now); | |||
} | |||
} |
@@ -1,22 +0,0 @@ | |||
package cc.smtweb.framework.web.web.entity; | |||
import cc.smtweb.framework.core.annotation.SwColumn; | |||
import cc.smtweb.framework.core.annotation.SwColumnForeign; | |||
import cc.smtweb.framework.core.annotation.SwTable; | |||
import lombok.Data; | |||
@Data | |||
@SwTable("sw_user.sys_dict") | |||
public class DictPO { | |||
@SwColumn(type = SwColumn.Type.ID) | |||
private Long dictId; | |||
// @SwColumn(type = SwColumn.Type.MASTER_ID) | |||
// @SwColumnForeign(table="sw_user.sys_dict_type", id="dt_id", code="dt_name") | |||
// private Long dictDtId; | |||
@SwColumn(type = {SwColumn.Type.CODE, SwColumn.Type.ORDER}) | |||
private String dictCode; | |||
private String dictLabel; | |||
} |
@@ -1,32 +0,0 @@ | |||
package cc.smtweb.framework.web.web.entity; | |||
import cc.smtweb.framework.core.annotation.SwColumn; | |||
import cc.smtweb.framework.core.annotation.SwTable; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
@Data | |||
@SwTable("sw_user.sys_user") | |||
public class UserPO implements Serializable { | |||
@SwColumn(type={SwColumn.Type.ID}) | |||
private Long userId; | |||
private String userName; | |||
private Long userSiteId; | |||
// @SwColumn(type={SwColumn.Type.CREATE_TIME}) | |||
// private Long userCreateAt; | |||
@SwColumn(type={SwColumn.Type.LAST_TIME}) | |||
private Long userDeptId; | |||
private String userPassword; | |||
private String userPhone; | |||
private Integer userStatus; | |||
private String userAvatar; | |||
} |
@@ -1,58 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
static: | |||
local-path: /data/sw/static/ | |||
file: | |||
local-path: /data/sw/files/ | |||
url: http://127.0.0.1:8888/files | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_core | |||
main: | |||
allow-bean-definition-overriding: true | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: root | |||
password: 1681860 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h | |||
park: | |||
secret: | |||
key: null | |||
# key: cmVmb3JtZXJyZWZvcm1lcg== | |||
swagger: | |||
name: smtweb-core | |||
version: 2.0 | |||
enabled: true | |||
@@ -1,52 +0,0 @@ | |||
sme: | |||
machine-id: 1 | |||
file-local-path: /data/files/smart/ | |||
file-host: http://member.sumi168.cn | |||
file-url: ${sme.file-host}:${server.port}${server.servlet.context-path}/${sme.file-local-path} | |||
server: | |||
port: 10001 | |||
servlet: | |||
context-path: /user | |||
feign: | |||
hystrix: | |||
enabled: false | |||
logging: | |||
level: | |||
smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb-user | |||
main: | |||
allow-bean-definition-overriding: true | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
datasource: | |||
user: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: smt | |||
password: smt_123456 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
swagger: | |||
name: smart | |||
version: 1.0.1 | |||
enabled: false | |||
weixin: | |||
url: http://devpk.smart.smefdd.com | |||
appId: wx8d11474c01b92378 | |||
appSecret: e1fa7bcdf27b46e7d69edad68ea8724b | |||
@@ -1,47 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
static: | |||
local-path: /data/sw/static/ | |||
file: | |||
local-path: /data/sw/files/ | |||
url: http://127.0.0.1:8888/files | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_core | |||
main: | |||
allow-bean-definition-overriding: true | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/sw_user?serverTimezone=UTC&allowMultiQueries=true&useSSL=false | |||
username: root | |||
password: 1681860 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h |
@@ -1,17 +0,0 @@ | |||
// 注册事件类 | |||
window.$swEvent.setup("defaultEvent", { | |||
init(options) { | |||
}, | |||
page$onInit(e) { | |||
console.log("onInit", e); | |||
}, | |||
sysUser$onLoad(e) { | |||
console.log("onLoad", e); | |||
}, | |||
userNickCode$onChange(e) { | |||
console.log("onChange", e); | |||
}, | |||
}); |
@@ -1,58 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
static: | |||
local-path: /data/sw/static/ | |||
file: | |||
local-path: /data/sw/files/ | |||
url: http://127.0.0.1:8888/files | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_core | |||
main: | |||
allow-bean-definition-overriding: true | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: root | |||
password: 1681860 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h | |||
park: | |||
secret: | |||
key: null | |||
# key: cmVmb3JtZXJyZWZvcm1lcg== | |||
swagger: | |||
name: smtweb-core | |||
version: 2.0 | |||
enabled: true | |||
@@ -1,52 +0,0 @@ | |||
sme: | |||
machine-id: 1 | |||
file-local-path: /data/files/smart/ | |||
file-host: http://member.sumi168.cn | |||
file-url: ${sme.file-host}:${server.port}${server.servlet.context-path}/${sme.file-local-path} | |||
server: | |||
port: 10001 | |||
servlet: | |||
context-path: /user | |||
feign: | |||
hystrix: | |||
enabled: false | |||
logging: | |||
level: | |||
smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb-user | |||
main: | |||
allow-bean-definition-overriding: true | |||
mvc: | |||
static-path-pattern: /static/** | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
datasource: | |||
user: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/smt_user?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=CTT&allowMultiQueries=true | |||
username: smt | |||
password: smt_123456 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
swagger: | |||
name: smart | |||
version: 1.0.1 | |||
enabled: false | |||
weixin: | |||
url: http://devpk.smart.smefdd.com | |||
appId: wx8d11474c01b92378 | |||
appSecret: e1fa7bcdf27b46e7d69edad68ea8724b | |||
@@ -1,47 +0,0 @@ | |||
smtweb: | |||
machine-id: 1 | |||
static: | |||
local-path: /data/sw/static/ | |||
file: | |||
local-path: /data/sw/files/ | |||
url: http://127.0.0.1:8888/files | |||
db: | |||
default: | |||
rule: | |||
prefix: _smt_ | |||
replace: smt_ | |||
server: | |||
port: 8888 | |||
servlet: | |||
context-path: / | |||
logging: | |||
level: | |||
root: INFO | |||
cc.smtweb: DEBUG | |||
spring: | |||
# 设置服务名 | |||
application: | |||
name: smtweb_core | |||
main: | |||
allow-bean-definition-overriding: true | |||
redis: | |||
host: 127.0.0.1 | |||
port: 6379 | |||
password: | |||
datasource: | |||
driver-class-name: com.mysql.cj.jdbc.Driver | |||
url: jdbc:mysql://127.0.0.1:3306/sw_user?serverTimezone=UTC&allowMultiQueries=true&useSSL=false | |||
username: root | |||
password: 1681860 | |||
servlet: | |||
multipart: | |||
max-file-size: 104857600000 | |||
max-request-size: 10485760000000 | |||
profiles: | |||
include: role | |||
cache: | |||
type: caffeine | |||
cache-names: | |||
- core | |||
caffeine: | |||
spec: maximumSize=1024,expireAfterWrite=2h |
@@ -1,17 +0,0 @@ | |||
// 注册事件类 | |||
window.$swEvent.setup("defaultEvent", { | |||
init(options) { | |||
}, | |||
page$onInit(e) { | |||
console.log("onInit", e); | |||
}, | |||
sysUser$onLoad(e) { | |||
console.log("onLoad", e); | |||
}, | |||
userNickCode$onChange(e) { | |||
console.log("onChange", e); | |||
}, | |||
}); |
@@ -1,5 +0,0 @@ | |||
#Generated by Apache Maven | |||
#Tue Nov 02 19:05:00 CST 2021 | |||
version=2.1.0-SNAPSHOT | |||
groupId=cc.smtweb | |||
artifactId=sw-framework-web |
@@ -1,7 +0,0 @@ | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\web\api\DemoTimerService.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\web\api\DemoDbService.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\spring\WebApplication.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\web\entity\DictPO.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\web\dao\TimerDao.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\spring\WebAutoConfiguration.java | |||
E:\jujia\git\6.0\sw\smtweb-framework\sw-framework-web\src\main\java\cc\smtweb\framework\web\web\entity\UserPO.java |
@@ -26,18 +26,13 @@ | |||
<artifactId>spring-boot-starter-web</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-freemarker</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-auth</artifactId> | |||
<artifactId>sw-framework-core</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>cc.smtweb</groupId> | |||
<artifactId>sw-framework-file</artifactId> | |||
<version>2.2.0-SNAPSHOT</version> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-freemarker</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>com.fasterxml.jackson.dataformat</groupId> | |||
@@ -2,7 +2,6 @@ package cc.smtweb.system.bpm.web.design.form.define; | |||
import cc.smtweb.framework.core.db.cache.ModelTableCache; | |||
import com.fasterxml.jackson.annotation.JsonIgnore; | |||
import com.sun.istack.internal.NotNull; | |||
import java.util.ArrayList; | |||
import java.util.HashMap; | |||
@@ -21,7 +20,7 @@ public class PageDatasets { | |||
@JsonIgnore | |||
private Map<String, PageDataset> mapName = null; | |||
public PageDatasets(@NotNull PageDataset[] datasets) { | |||
public PageDatasets(PageDataset[] datasets) { | |||
this.list = new ArrayList<>(datasets.length); | |||
this.mapId = new HashMap<>(datasets.length); | |||
this.mapName = new HashMap<>(datasets.length); | |||