package cn.bigchin.spark.app.model;
import cn.bigchin.spark.Spark;
import cn.bigchin.spark.app.config.ThreadVariable;
import cn.bigchin.spark.expand.db.dialect.Logic;
import cn.bigchin.spark.expand.db.dialect.SparkDialect;
import cn.bigchin.spark.expand.safe.JsoupFilter;
import cn.bigchin.spark.kit.ArrayKit;
import cn.bigchin.spark.kit.NumberKit;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.*;
import com.jfinal.plugin.activerecord.cache.ICache;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* TODO:
*
* @author 一川死水(yichuan95@126.com)
* on 2024/6/12 下午1:44
*/
public class SparkModel<M extends SparkModel> extends Model<M> {
public final static SparkModelConfig modelConfig = Spark.config(SparkModelConfig.class);
/**
* TODO:快捷创建条件对象
*
* @param <M>
* @return
*/
public static <M extends SparkModel<M>> M cond() {
return (M) new SparkModel();
}
public Table table(){
return _getTable();
}
/**
* TODO:查询返回的列
*
* @param columns
* @return
*/
public M loadColumns(String columns) {
if (_getTable().hasColumnLabel(columns)) {
columns = String.format("%s.%s",_getTable().getName(), columns);
}
this.put(Logic.SET_KEY_COLUMNS, columns);
return (M) this;
}
/**
* TODO:查询返回的列
*
* @param columns
* @return
*/
public M loadColumnArray(String... columns) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < columns.length; i++) {
if (_getTable().hasColumnLabel(columns[i])) {
sb.append(_getTable().getName()).append(".");
}
sb.append(columns[i]);
if (columns.length > i + 1) {
sb.append(",");
}
}
this.put(Logic.SET_KEY_COLUMNS, sb.toString());
return (M) this;
}
/**
* TODO:获取返回列
*
* @return
*/
public String loadColumns() {
String columns = get(Logic.SET_KEY_COLUMNS);
if (StrKit.isBlank(columns)) {
return "*";
} else {
return columns.trim();
}
}
/**
* TODO:查询逻辑
*
* @param name
* @param logic
* @return M
**/
public M condition(String name, String logic) {
this.put(Logic.SET_KEY_COND + name, logic);
return (M) this;
}
/**
* TODO:获取查询逻辑
*
* @param name
* @return java.lang.String
**/
public String condition(String name) {
return this.get(Logic.SET_KEY_COND + name);
}
public M groupBy(String column) {
this.put(Logic.SET_KEY_GROUP_BY, column);
return (M) this;
}
public String groupBy() {
String groupBy = get(Logic.SET_KEY_GROUP_BY);
return StrKit.isBlank(groupBy) ? "" : groupBy;
}
/**
* TODO:查询排序
*
* @param orderBy
* @return
*/
public M orderBy(String orderBy) {
this.put(Logic.SET_KEY_ORDER_BY, orderBy);
return (M) this;
}
/**
* TODO:查询排序
*
* @param orderBy
* @return
*/
public M orderByAsc(String orderBy) {
this.put(Logic.SET_KEY_ORDER_BY, String.format("%s asc",orderBy));
return (M) this;
}
/**
* TODO:查询排序
*
* @param orderBy
* @return
*/
public M orderByDesc(String orderBy) {
this.put(Logic.SET_KEY_ORDER_BY, String.format("%s desc",orderBy));
return (M) this;
}
/**
* TODO:查询排序
*
* @return
*/
public String orderBy() {
String orderBy = get(Logic.SET_KEY_ORDER_BY);
return StrKit.isBlank(orderBy) ? "" : orderBy;
}
public M auth(String key, String content) {
Kv kv = auth();
this.put(Logic.SET_KEY_AUTH, kv.set(key, content));
return (M) this;
}
public Kv auth() {
Kv kv = this.get(Logic.SET_KEY_AUTH);
if (kv == null) {
kv = Kv.create();
}
return kv;
}
/**
* TODO:查询limit
*
* @param limit
* @return
*/
public M limit(String limit) {
this.put(Logic.SET_KEY_LIMIT, limit);
return (M) this;
}
/**
* TODO:查询limit
*
* @return
*/
public String limit() {
String limit = get(Logic.SET_KEY_LIMIT);
return StrKit.isBlank(limit) ? "" : limit;
}
public SqlPara sqlPara() {
return _getDialect().query(_getTable(), this);
}
/**
* TODO:数据源类型
*
* @return
*/
public SparkDialect _getDialect() {
Config config = _getConfig();
return (SparkDialect) config.getDialect();
}
/**
* TODO:获取缓存
*
* @return
*/
public ICache _getCache() {
return this._getConfig().getCache();
}
/**
* TODO:获取表的缓存空间
*
* @param
* @return
* @author 王剑洪 on 2019/12/26 13:55
**/
public String _getCacheName() {
return String.format("%s:%s",_getConfig().getName(), _getTable().getName());
}
/**
* TODO:获取缓存key
*
* @param sql
* @param paras
* @return
* @author 王剑洪 on 2019/12/26 13:55
**/
public String buildCacheKey(String sql, Object... paras) {
String key = "sql:" + sql;
String cond = "";
if (paras != null && paras.length > 0) {
for (int i = 0; i < paras.length; i++) {
cond += paras[i];
if (i < paras.length - 1) {
cond += ",";
}
}
}
key = key.replaceAll("\n", "")
.replaceAll("\t", " ")
.replaceAll(" +", " ");
return String.format("%s:[%s]",key, cond);
}
/**
* TODO:移除缓存
*
* @param res
* @return
*/
public boolean removeAllCache(boolean res) {
/**日志类缓存不处理*/
String tableName = _getTable().getName();
if (res && (!tableName.startsWith("log") && !tableName.endsWith("log"))) {
Spark.getCache().removeAll(_getCacheName());
}
return res;
}
/**
* TODO:过滤html标签的字段
*
* @param
* @return
* @author 王剑洪 on 2019/12/26 13:43
**/
@Override
protected void filter(int filterBy) {
if (StrKit.notBlank(modelConfig.getFilterHtml())) {
String[] columnNameArray = ArrayKit.toStrArray(modelConfig.getFilterHtml());
for (String name : columnNameArray) {
if (_getTable().hasColumnLabel(name)) {
if (get(name) != null) {
set(name, JsoupFilter.getText(get(name)));
}
}
}
}
}
@Override
public boolean save() {
remove(modelConfig.getCt(), modelConfig.getCm(), modelConfig.getUm(), modelConfig.getUt());
if (_getTable().hasColumnLabel(modelConfig.getDel())) {
if (get(modelConfig.getDel()) == null) {
setDel(false);
}
}
if (_getTable().hasColumnLabel(modelConfig.getDel())) {
set(modelConfig.getDel(), false);
}
if (_getTable().hasColumnLabel(modelConfig.getCt())) {
set(modelConfig.getCt(), new Date());
}
if (_getTable().hasColumnLabel(modelConfig.getCm())) {
set(modelConfig.getCm(), ThreadVariable.me().get(modelConfig.getCm()));
}
if (_getTable().hasColumnLabel(modelConfig.getSort())) {
Integer sort = getInt(modelConfig.getSort());
sort = NumberKit.isScope(sort, 1, 99999) ? sort : 1;
set(modelConfig.getSort
没有合适的资源?快使用搜索试试~ 我知道了~
基于JFinal框架与Vue+Element的简洁后台管理系统设计源码
共453个文件
java:186个
vue:91个
js:62个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 140 浏览量
2024-10-02
08:09:12
上传
评论
收藏 18.94MB ZIP 举报
温馨提示
该项目是一款基于JFinal框架和Vue+Element前端组件库的简洁型后台管理系统源码,总计包含454个文件,其中Java源代码186个,Vue组件91个,JavaScript和HTML文件共62个,图像资源25个PNG文件,SQL脚本23个,XML配置15个,SCSS样式8个,其他包含Chinese字符文件8个,Git忽略配置5个,映射文件4个。项目采用Java语言开发,前端技术栈涵盖Vue和JavaScript,整体设计注重简洁与高效。
资源推荐
资源详情
资源评论
收起资源包目录
基于JFinal框架与Vue+Element的简洁后台管理系统设计源码 (453个子文件)
spark_vue_table.chin 4KB
spark_sql_dic_html.chin 3KB
spark_vue_edit.chin 3KB
spark_model.chin 2KB
spark_controller.chin 2KB
spark_js.chin 2KB
spark_service.chin 539B
spark_sql.chin 79B
swagger-ui.css 139KB
.env.development 262B
avatar3.gif 133KB
avatar2.gif 132KB
.gitignore 313B
.gitignore 182B
.gitignore 176B
.gitignore 29B
.gitignore 16B
index.html 5KB
oauth2-redirect.html 2KB
index.html 1KB
favicon.ico 4KB
spark-app.iml 476B
spark-ui.iml 305B
big-chin.iml 300B
SparkModel.java 20KB
ClassKit.java 19KB
Generator.java 14KB
RouteManager.java 12KB
PermissionService.java 11KB
MysqlHabitDialect.java 11KB
BasicsOption.java 9KB
SwaggerManager.java 9KB
ActiveRecordKit.java 9KB
SystemKit.java 9KB
SparkEhCache.java 8KB
ModelGenerator.java 8KB
ParaDirective.java 7KB
Log4J2Builder.java 7KB
ManagerService.java 7KB
OperateLog.java 7KB
ApiLog.java 7KB
CodeField.java 7KB
RoleService.java 7KB
MoreActiveRecordPlugin.java 7KB
ConfigService.java 6KB
SparkActionReporter.java 6KB
FileService.java 6KB
DaoTemplate.java 6KB
ManagerInfoService.java 6KB
DictService.java 6KB
CodeBasicsService.java 6KB
SparkController.java 6KB
JsoupFilter.java 6KB
CodeTableService.java 6KB
ContentOption.java 6KB
Permission.java 6KB
JobService.java 6KB
CodeController.java 6KB
InjectorKit.java 5KB
SqlFilter.java 5KB
CodeTable.java 5KB
GenerateKit.java 5KB
DbConfig.java 5KB
SparkPropManager.java 5KB
SparkMemoryCache.java 5KB
UnifiedInterceptor.java 5KB
Department.java 4KB
Job.java 4KB
SparkCachePlugin.java 4KB
StrKit.java 4KB
IndexController.java 4KB
ManagerLoginLog.java 4KB
SparkRedisCache.java 4KB
Parameter.java 4KB
ImageKit.java 4KB
Config.java 4KB
JobLog.java 4KB
OperateLogService.java 4KB
FileType.java 4KB
I18nService.java 4KB
CodeBasics.java 4KB
ValidatorKit.java 4KB
ManagerInfo.java 4KB
FreeApiService.java 4KB
App.java 4KB
FileKit.java 4KB
RequestKit.java 4KB
CodeTpl.java 4KB
Manager.java 4KB
ManagerLogin.java 3KB
Dict.java 3KB
ApiLogService.java 3KB
ToolFreeApi.java 3KB
SparkQuartzManager.java 3KB
TreeKit.java 3KB
PhonePrefix.java 3KB
SparkService.java 3KB
Spark.java 3KB
ArrayKit.java 3KB
FreeApi.java 3KB
共 453 条
- 1
- 2
- 3
- 4
- 5
资源评论
wjs2024
- 粉丝: 2316
- 资源: 5457
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YOLOC 是将不同的模块组合起来构建不同的物体检测模型,包括 YOLOv3、YOLOv4、Scaled-YOLOv4、YOLOv5、YOLOv6、YOLOv7、YOLOX、YOLOR、PPY.zip
- yolo3-keras的源码.zip
- zulu8.82.0.21-ca-jdk8.0.432-macosx-aarch64.dmg
- YOLO-World + EfficientViT SAM.zip
- Yolo-v4-v3-v2中模型转换方法总结.zip
- qt 5.3.2 mingw 安装包
- YOLO 自主无人机 - 深度学习人员检测YOLO 无人机在 YOLO 深度网络的帮助下定位并跟踪人员.zip
- YOLO 对象定位如何与 Keras 配合使用的指南(第 2 部分).zip
- YOLO 在 CPU 上运行并经过优化.zip
- YOLO学习资源.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功