@@ -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> | <artifactId>spring-boot-starter-web</artifactId> | ||||
</dependency> | </dependency> | ||||
<dependency> | <dependency> | ||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-freemarker</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>cc.smtweb</groupId> | <groupId>cc.smtweb</groupId> | ||||
<artifactId>sw-framework-auth</artifactId> | |||||
<artifactId>sw-framework-core</artifactId> | |||||
<version>2.2.0-SNAPSHOT</version> | <version>2.2.0-SNAPSHOT</version> | ||||
</dependency> | </dependency> | ||||
<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> | ||||
<dependency> | <dependency> | ||||
<groupId>com.fasterxml.jackson.dataformat</groupId> | <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 cc.smtweb.framework.core.db.cache.ModelTableCache; | ||||
import com.fasterxml.jackson.annotation.JsonIgnore; | import com.fasterxml.jackson.annotation.JsonIgnore; | ||||
import com.sun.istack.internal.NotNull; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
@@ -21,7 +20,7 @@ public class PageDatasets { | |||||
@JsonIgnore | @JsonIgnore | ||||
private Map<String, PageDataset> mapName = null; | private Map<String, PageDataset> mapName = null; | ||||
public PageDatasets(@NotNull PageDataset[] datasets) { | |||||
public PageDatasets(PageDataset[] datasets) { | |||||
this.list = new ArrayList<>(datasets.length); | this.list = new ArrayList<>(datasets.length); | ||||
this.mapId = new HashMap<>(datasets.length); | this.mapId = new HashMap<>(datasets.length); | ||||
this.mapName = new HashMap<>(datasets.length); | this.mapName = new HashMap<>(datasets.length); | ||||