From 9e3bcd298c798329ff38ac2ff0982384cd957ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=BC=E5=AD=90=E6=98=8E?= <2513889970@qq.com> Date: Sat, 22 Mar 2025 23:19:24 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E7=BC=93=E5=AD=98=EF=BC=8C=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=8F=92=E4=BB=B6crud=EF=BC=8C=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=8C=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=A3=81=E7=9B=98=E4=BD=8D=E7=BD=AE=E3=80=81domain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- pom.xml | 9 + .../vip/fuck/sm/SolonManagerApplication.java | 9 + .../sm/common/config/RedisCacheConfig.java | 34 ++ .../sm/common/config/WebMvcConfigurer.java | 9 +- .../common/exception/BusinessException.java | 17 +- .../common/exception/handler/AppFilter.java | 2 +- .../vip/fuck/sm/common/utils/DataResult.java | 10 + .../fuck/sm/controller/IndexController.java | 14 + .../sm/controller/SysFilesController.java | 2 +- .../sm/controller/SysPlugsController.java | 88 ++++++ .../vip/fuck/sm/entity/SysPlugsEntity.java | 86 +++++ .../vip/fuck/sm/mapper/SysPlugsMapper.java | 17 + .../vip/fuck/sm/service/SysFilesService.java | 3 + .../vip/fuck/sm/service/SysPlugsService.java | 16 + .../sm/service/impl/SysFilesServiceImpl.java | 37 ++- .../sm/service/impl/SysPlugsServiceImpl.java | 15 + src/main/resources/app.yml | 34 +- src/main/resources/mapper/SysPlugsMapper.xml | 21 ++ src/main/resources/static/favicon.ico | 0 .../resources/template/Controller.java.vm | 12 +- .../resources/template/ServiceImpl.java.vm | 2 +- src/main/resources/template/list.html.vm | 2 +- src/main/resources/template/menu.sql.vm | 10 +- .../resources/templates/logs/log_list.html | 156 +++++++++ .../resources/templates/sysfiles/list.html | 8 +- .../resources/templates/sysplugs/list.html | 299 ++++++++++++++++++ 27 files changed, 864 insertions(+), 50 deletions(-) create mode 100644 src/main/java/vip/fuck/sm/common/config/RedisCacheConfig.java create mode 100644 src/main/java/vip/fuck/sm/controller/SysPlugsController.java create mode 100644 src/main/java/vip/fuck/sm/entity/SysPlugsEntity.java create mode 100644 src/main/java/vip/fuck/sm/mapper/SysPlugsMapper.java create mode 100644 src/main/java/vip/fuck/sm/service/SysPlugsService.java create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysPlugsServiceImpl.java create mode 100644 src/main/resources/mapper/SysPlugsMapper.xml create mode 100644 src/main/resources/static/favicon.ico create mode 100644 src/main/resources/templates/logs/log_list.html create mode 100644 src/main/resources/templates/sysplugs/list.html diff --git a/.gitignore b/.gitignore index 8322325..af24a0d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,5 @@ .idea/* .mvn/ aitangbao.iml -logs/ +log/ target/ diff --git a/pom.xml b/pom.xml index d8f0c86..90b0103 100644 --- a/pom.xml +++ b/pom.xml @@ -136,6 +136,15 @@ org.noear sa-token-solon-plugin + + + org.noear + solon-cache-jedis + + + cn.hutool hutool-all diff --git a/src/main/java/vip/fuck/sm/SolonManagerApplication.java b/src/main/java/vip/fuck/sm/SolonManagerApplication.java index 13c7893..e0fa773 100644 --- a/src/main/java/vip/fuck/sm/SolonManagerApplication.java +++ b/src/main/java/vip/fuck/sm/SolonManagerApplication.java @@ -2,8 +2,13 @@ package vip.fuck.sm; import lombok.extern.slf4j.Slf4j; import org.noear.solon.Solon; +import org.noear.solon.annotation.Inject; import org.noear.solon.annotation.SolonMain; import org.noear.solon.web.cors.CrossFilter; +import org.noear.solon.web.staticfiles.StaticConfig; +import org.noear.solon.web.staticfiles.StaticMappings; +import org.noear.solon.web.staticfiles.repository.ClassPathStaticRepository; +import org.noear.solon.web.staticfiles.repository.FileStaticRepository; /** * 启动类 @@ -14,10 +19,14 @@ import org.noear.solon.web.cors.CrossFilter; @SolonMain public class SolonManagerApplication { + public static void main(String[] args) throws Exception { Solon.start(SolonManagerApplication.class, args, app->{ //例:或者:增加全局处理(用过滤器模式) app.filter(-1, new CrossFilter().allowedOrigins("*")); //加-1 优先级更高 + String filePath = app.cfg().getProperty("file.path" ); + StaticMappings.add("/files/", new FileStaticRepository(filePath)); + StaticMappings.add("/static/", new ClassPathStaticRepository(StaticConfig.RES_STATIC_LOCATION)); }); } diff --git a/src/main/java/vip/fuck/sm/common/config/RedisCacheConfig.java b/src/main/java/vip/fuck/sm/common/config/RedisCacheConfig.java new file mode 100644 index 0000000..2ed5219 --- /dev/null +++ b/src/main/java/vip/fuck/sm/common/config/RedisCacheConfig.java @@ -0,0 +1,34 @@ +package vip.fuck.sm.common.config; + +import cn.dev33.satoken.dao.SaTokenDao; +import cn.dev33.satoken.solon.dao.SaTokenDaoOfRedis; +import org.noear.redisx.RedisClient; +import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Configuration; +import org.noear.solon.annotation.Inject; +import org.noear.solon.cache.jedis.RedisCacheService; +import org.noear.solon.data.cache.CacheService; + +@Configuration +public class RedisCacheConfig { + + // 构建 redis client(如直接用) + @Bean + public RedisClient redisClient(@Inject("${redis}") RedisClient client) { + return client; + } + + //构建 Cache Service(给 @Cache 用) + @Bean + public CacheService cacheService(@Inject RedisClient client){ + RedisCacheService service = new RedisCacheService(client, 30); + service.enableMd5key(false); + return service; + } + + //构建 SaToken Dao + @Bean + public SaTokenDao saTokenDao(@Inject RedisClient client){ + return new SaTokenDaoOfRedis(client); + } +} \ No newline at end of file diff --git a/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java b/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java index d15af9d..ed73f05 100644 --- a/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java +++ b/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java @@ -29,15 +29,10 @@ import java.util.List; @Configuration public class WebMvcConfigurer { - @Inject("${file.path}") - private String filePath; - @Bean - public void staticFiles() { - StaticMappings.add("/files/", new FileStaticRepository(filePath)); - StaticMappings.add("/static/", new ClassPathStaticRepository("static")); - } + + //添加拦截器 diff --git a/src/main/java/vip/fuck/sm/common/exception/BusinessException.java b/src/main/java/vip/fuck/sm/common/exception/BusinessException.java index 343a384..2a398da 100644 --- a/src/main/java/vip/fuck/sm/common/exception/BusinessException.java +++ b/src/main/java/vip/fuck/sm/common/exception/BusinessException.java @@ -1,5 +1,6 @@ package vip.fuck.sm.common.exception; +import lombok.Data; import vip.fuck.sm.common.exception.code.BaseResponseCode; import vip.fuck.sm.common.exception.code.ResponseCodeInterface; @@ -10,6 +11,7 @@ import vip.fuck.sm.common.exception.code.ResponseCodeInterface; * @version V1.0 * @date 2020年3月18日 */ +@Data public class BusinessException extends RuntimeException { /** * 异常编号 @@ -21,6 +23,8 @@ public class BusinessException extends RuntimeException { */ private final String detailMessage; + Throwable throwable; + public BusinessException(int messageCode, String message) { super(message); this.messageCode = messageCode; @@ -33,6 +37,13 @@ public class BusinessException extends RuntimeException { this.detailMessage = message; } + public BusinessException(String message,Throwable throwable) { + super(message); + this.messageCode = BaseResponseCode.OPERATION_ERRO.getCode(); + this.detailMessage = message; + this.throwable = throwable; + } + /** * 构造函数 * @@ -42,11 +53,5 @@ public class BusinessException extends RuntimeException { this(code.getCode(), code.getMsg()); } - public int getMessageCode() { - return messageCode; - } - public String getDetailMessage() { - return detailMessage; - } } diff --git a/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java b/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java index 17fdbde..11d247f 100644 --- a/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java +++ b/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java @@ -28,7 +28,7 @@ public class AppFilter implements Filter { BaseResponseCode.METHODARGUMENTNOTVALIDEXCEPTION.getCode(), e.getMessage())); }catch (BusinessException e){ - ctx.render(new DataResult(e.getMessageCode(), e.getDetailMessage())); + ctx.render(new DataResult(e.getMessageCode(), e.getDetailMessage(),e.getThrowable(),null)); } catch (StatusException e){ ctx.status(e.getCode()); if (e.getCode() == 404){ diff --git a/src/main/java/vip/fuck/sm/common/utils/DataResult.java b/src/main/java/vip/fuck/sm/common/utils/DataResult.java index 2964ca3..bfb5f70 100644 --- a/src/main/java/vip/fuck/sm/common/utils/DataResult.java +++ b/src/main/java/vip/fuck/sm/common/utils/DataResult.java @@ -30,6 +30,9 @@ public class DataResult { @ApiModelProperty(value = "需要返回的数据", name = "data") private Object data; + @ApiModelProperty(value = "开发环境错误信息", name = "devErrorMsg") + private String devErrorMsg; + public DataResult(int code, Object data) { this.code = code; this.data = data; @@ -42,6 +45,13 @@ public class DataResult { this.data = data; } + public DataResult(int code, String msg,Throwable throwable, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + this.devErrorMsg = throwable!=null ?throwable.getMessage():null; + } + public DataResult(int code, String msg) { this.code = code; this.msg = msg; diff --git a/src/main/java/vip/fuck/sm/controller/IndexController.java b/src/main/java/vip/fuck/sm/controller/IndexController.java index a178c6f..28758f7 100644 --- a/src/main/java/vip/fuck/sm/controller/IndexController.java +++ b/src/main/java/vip/fuck/sm/controller/IndexController.java @@ -1,13 +1,20 @@ package vip.fuck.sm.controller; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ClassLoaderUtil; +import cn.hutool.core.util.ClassUtil; import io.swagger.annotations.Api; import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Get; import org.noear.solon.annotation.Mapping; +import org.noear.solon.core.handle.Context; import org.noear.solon.core.handle.ModelAndView; +import org.noear.solon.core.util.PathUtil; import org.noear.solon.validation.annotation.Valid; +import java.io.InputStream; + /** * 视图 @@ -22,6 +29,13 @@ import org.noear.solon.validation.annotation.Valid; @Valid public class IndexController { + @Mapping ("/favicon.ico") + public void favicon(Context ctx){ + InputStream file = ClassLoaderUtil.getClassLoader() + .getResourceAsStream("/static/favicon.ico" ); + ctx.output(file); + } + @Get @Mapping ("/index/login") public ModelAndView login1(){ return this.loginIndex(); diff --git a/src/main/java/vip/fuck/sm/controller/SysFilesController.java b/src/main/java/vip/fuck/sm/controller/SysFilesController.java index 7feba05..29ce8a6 100644 --- a/src/main/java/vip/fuck/sm/controller/SysFilesController.java +++ b/src/main/java/vip/fuck/sm/controller/SysFilesController.java @@ -60,7 +60,7 @@ public class SysFilesController { @Post @Mapping ("/listByPage") @SaCheckPermission("sysFiles:list") public IPage findListByPage( SysFilesEntity sysFiles) { - return sysFilesService.page(sysFiles.getQueryPage(), Wrappers.lambdaQuery().orderByDesc(SysFilesEntity::getCreateDate)); + return sysFilesService.filesPage(sysFiles); } diff --git a/src/main/java/vip/fuck/sm/controller/SysPlugsController.java b/src/main/java/vip/fuck/sm/controller/SysPlugsController.java new file mode 100644 index 0000000..9b8b8f1 --- /dev/null +++ b/src/main/java/vip/fuck/sm/controller/SysPlugsController.java @@ -0,0 +1,88 @@ +package vip.fuck.sm.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.noear.solon.annotation.*; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import java.util.List; + +import org.noear.solon.core.handle.ModelAndView; +import vip.fuck.sm.common.utils.DataResult; + +import vip.fuck.sm.entity.SysPlugsEntity; +import vip.fuck.sm.service.SysPlugsService; + + + +/** + * 系统插件 + * + * @author Rish + * @email xian.zi.ming@qq.com + * @date 2025-03-22 20:59:06 + */ +@Controller +@Mapping("/") +public class SysPlugsController { + @Inject + private SysPlugsService sysPlugsService; + + /** + * 跳转到页面 + */ + @Get + @Mapping ("/index/sysPlugs") + public ModelAndView sysPlugs() { + return new ModelAndView("sysplugs/list.html"); + } + + + @ApiOperation(value = "查询分页数据") + @Post @Mapping ("sysPlugs/listByPage") + @SaCheckPermission("sysPlugs:list") + public DataResult findListByPage( SysPlugsEntity sysPlugs){ + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + //查询条件示例 + queryWrapper.eq(sysPlugs.getQualifiedVersion() != null, SysPlugsEntity::getQualifiedVersion, sysPlugs.getQualifiedVersion()); + queryWrapper.orderByDesc(SysPlugsEntity::getQualifiedVersion); + IPage iPage = sysPlugsService.page(sysPlugs.getQueryPage(), queryWrapper); + return DataResult.success(iPage); + } + + + @ApiOperation(value = "新增") + @Post @Mapping ("sysPlugs/add") + @SaCheckPermission("sysPlugs:add") + public DataResult add( SysPlugsEntity sysPlugs){ + sysPlugsService.save(sysPlugs); + return DataResult.success(); + } + + @ApiOperation(value = "删除") + @Delete @Mapping ("sysPlugs/delete") + @SaCheckPermission("sysPlugs:delete") + + public DataResult delete( @ApiParam(value = "id集合") List ids){ + sysPlugsService.removeByIds(ids); + return DataResult.success(); + } + + @ApiOperation(value = "更新") + @Put + @Mapping ("sysPlugs/update") + @SaCheckPermission("sysPlugs:update") + + public DataResult update( SysPlugsEntity sysPlugs){ + sysPlugsService.updateById(sysPlugs); + return DataResult.success(); + } + + + +} diff --git a/src/main/java/vip/fuck/sm/entity/SysPlugsEntity.java b/src/main/java/vip/fuck/sm/entity/SysPlugsEntity.java new file mode 100644 index 0000000..b434051 --- /dev/null +++ b/src/main/java/vip/fuck/sm/entity/SysPlugsEntity.java @@ -0,0 +1,86 @@ +package vip.fuck.sm.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; +import vip.fuck.sm.entity.BasePageEntity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import java.util.Date; +import java.io.Serializable; + +import lombok.Data; + +/** + * 系统插件 + * + * @author Rish + * @email xian.zi.ming@qq.com + * @date 2025-03-22 20:59:06 + */ +@Data +@TableName("sys_plugs") +public class SysPlugsEntity extends BasePageEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 全限版本 + */ + @TableId("qualified_version") + private String qualifiedVersion; + + /** + * 作者 + */ + @TableField("author") + private String author; + + /** + * 首页 + */ + @TableField("site_url") + private String siteUrl; + + /** + * 文档地址 + */ + @TableField("doc_url") + private String docUrl; + + /** + * 描述 + */ + @TableField("description") + private String description; + + /** + * 版本 + */ + @TableField("version") + private String version; + + /** + * 磁盘位置 + */ + @TableField("jar_path") + private String jarPath; + + /** + * 插件大小 + */ + @TableField("jar_size") + private Long jarSize; + + /** + * 状态 + */ + @TableField("status") + private Integer status; + + /** + * 获取时间 + */ + @TableField("upload_time") + private Date uploadTime; + + +} diff --git a/src/main/java/vip/fuck/sm/mapper/SysPlugsMapper.java b/src/main/java/vip/fuck/sm/mapper/SysPlugsMapper.java new file mode 100644 index 0000000..b8b553a --- /dev/null +++ b/src/main/java/vip/fuck/sm/mapper/SysPlugsMapper.java @@ -0,0 +1,17 @@ +package vip.fuck.sm.mapper; + +import vip.fuck.sm.entity.SysPlugsEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 系统插件 + * + * @author Rish + * @email xian.zi.ming@qq.com + * @date 2025-03-22 20:59:06 + */ +@Mapper +public interface SysPlugsMapper extends BaseMapper { + +} diff --git a/src/main/java/vip/fuck/sm/service/SysFilesService.java b/src/main/java/vip/fuck/sm/service/SysFilesService.java index a95e696..a0bee01 100644 --- a/src/main/java/vip/fuck/sm/service/SysFilesService.java +++ b/src/main/java/vip/fuck/sm/service/SysFilesService.java @@ -1,5 +1,6 @@ package vip.fuck.sm.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import vip.fuck.sm.entity.SysFilesEntity; import org.noear.solon.core.handle.Context; @@ -32,5 +33,7 @@ public interface SysFilesService extends IService { * @param ids */ void removeByIdsAndFiles(List ids); + + IPage filesPage(SysFilesEntity sysFiles); } diff --git a/src/main/java/vip/fuck/sm/service/SysPlugsService.java b/src/main/java/vip/fuck/sm/service/SysPlugsService.java new file mode 100644 index 0000000..4bfaabd --- /dev/null +++ b/src/main/java/vip/fuck/sm/service/SysPlugsService.java @@ -0,0 +1,16 @@ +package vip.fuck.sm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import vip.fuck.sm.entity.SysPlugsEntity; + +/** + * 系统插件 + * + * @author Rish + * @email xian.zi.ming@qq.com + * @date 2025-03-22 20:59:06 + */ +public interface SysPlugsService extends IService { + +} + diff --git a/src/main/java/vip/fuck/sm/service/impl/SysFilesServiceImpl.java b/src/main/java/vip/fuck/sm/service/impl/SysFilesServiceImpl.java index 72b2e93..e51792b 100644 --- a/src/main/java/vip/fuck/sm/service/impl/SysFilesServiceImpl.java +++ b/src/main/java/vip/fuck/sm/service/impl/SysFilesServiceImpl.java @@ -1,5 +1,9 @@ package vip.fuck.sm.service.impl; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import vip.fuck.sm.common.exception.BusinessException; import vip.fuck.sm.common.utils.DateUtils; @@ -25,11 +29,17 @@ import java.util.UUID; */ @Component(value = "share:sysFilesService",typed = true) public class SysFilesServiceImpl extends ServiceImpl implements SysFilesService { - @Inject("${server.contextPath}") - private String contextPath; + + @Inject("${file.path}") private String filePath; + @Inject("${file.contextPath}") + private String fileContextPath; + + @Inject("${file.schema}") + private String fileSchema; + @Override public String saveFile(UploadedFile file, HttpRequest request) { //存储文件夹 @@ -48,11 +58,14 @@ public class SysFilesServiceImpl extends ServiceImpl filesPage(SysFilesEntity sysFiles) { + IPage p = this.page(sysFiles.getQueryPage(), Wrappers.lambdaQuery().orderByDesc(SysFilesEntity::getCreateDate)); + if(ObjectUtil.isNotEmpty(p) && ObjectUtil.isNotEmpty(p.getRecords())){ + for (SysFilesEntity record : p.getRecords()) { + if(ObjectUtil.isNotEmpty(record.getUrl())){ + record.setUrl(String.format("%s://%s",fileSchema, + String.format("%s/%s",fileContextPath,record.getUrl()).replaceAll("/+","/") ) ); + } + } + } + return p; + } + /** * 获取文件后缀名 * diff --git a/src/main/java/vip/fuck/sm/service/impl/SysPlugsServiceImpl.java b/src/main/java/vip/fuck/sm/service/impl/SysPlugsServiceImpl.java new file mode 100644 index 0000000..aa809a9 --- /dev/null +++ b/src/main/java/vip/fuck/sm/service/impl/SysPlugsServiceImpl.java @@ -0,0 +1,15 @@ +package vip.fuck.sm.service.impl; + +import org.noear.solon.annotation.Component; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import vip.fuck.sm.mapper.SysPlugsMapper; +import vip.fuck.sm.entity.SysPlugsEntity; +import vip.fuck.sm.service.SysPlugsService; + + +@Component(value = "sysPlugsService",typed = true) +public class SysPlugsServiceImpl extends ServiceImpl implements SysPlugsService { + + +} \ No newline at end of file diff --git a/src/main/resources/app.yml b/src/main/resources/app.yml index f6c3eb8..b49cc15 100644 --- a/src/main/resources/app.yml +++ b/src/main/resources/app.yml @@ -1,17 +1,19 @@ server.port: 8080 -server.contextPath: '/' +server.contextPath: '/manager' solon.env: 'dev' -solon.app: - name: 'solon-manager' - group: 'vip.fuck' +solon: + app: + name: 'solon-manager' + group: 'vip.fuck' + logging: + appender: + console: + level: INFO + file: + name: "log/${solon.app.name}" + level: INFO -solon.logging: - appender: - console: - level: INFO - file: - level: INFO solon.dataSources: master!: @@ -21,8 +23,12 @@ solon.dataSources: driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3306/company_project?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2b8 - - +redis: + server: "localhost:6379" + db: 0 #默认为 0,可不配置 + password: "" + maxTotal: 200 #默认为 200,可不配 + serializer: 'org.noear.redisx.utils.SerializerJson' mybatis.master: typeAliases: #支持包名 或 类名(大写开头 或 *)//支持 ** 或 * 占位符 - "vip.fuck.sm.entity" @@ -75,6 +81,8 @@ project: database: mysql file: + schema: 'http' + contextPath: 'localhost:${server.port}/${server.contextPath}/' #文件上传目录 绝对路径 末尾不需要加 / - path: D:/files #windows + path: 'D:/files' #windows #path: /data/files #linux \ No newline at end of file diff --git a/src/main/resources/mapper/SysPlugsMapper.xml b/src/main/resources/mapper/SysPlugsMapper.xml new file mode 100644 index 0000000..adc7d37 --- /dev/null +++ b/src/main/resources/mapper/SysPlugsMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/template/Controller.java.vm b/src/main/resources/template/Controller.java.vm index e3e3e81..b39c289 100644 --- a/src/main/resources/template/Controller.java.vm +++ b/src/main/resources/template/Controller.java.vm @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import cn.dev33.satoken.annotation.SaCheckPermission; import org.springframework.beans.factory.annotation.Autowired; - +import org.noear.solon.core.handle.ModelAndView; import org.springframework.stereotype.Controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,19 +36,18 @@ public class ${className}Controller { * 跳转到页面 */ @Get @Mapping ("/index/${classname}") - public String ${classname}() { - return "${classNameLower}/list"; + public ModelAndView ${classname}() { + return new ModelAndView("${classNameLower}/list.html"); } @ApiOperation(value = "查询分页数据") @Post @Mapping ("${classname}/listByPage") @SaCheckPermission("${classname}:list") - @ResponseBody public DataResult findListByPage( ${className}Entity ${classname}){ LambdaQueryWrapper<${className}Entity> queryWrapper = Wrappers.lambdaQuery(); //查询条件示例 - queryWrapper.eq(tbGoods.getId() != null, ${className}Entity::getId, ${classname}.getId()); + queryWrapper.eq(${classname}.getId() != null, ${className}Entity::getId, ${classname}.getId()); queryWrapper.orderByDesc(${className}Entity::getId); IPage<${className}Entity> iPage = ${classname}Service.page(${classname}.getQueryPage(), queryWrapper); return DataResult.success(iPage); @@ -58,7 +57,6 @@ public class ${className}Controller { @ApiOperation(value = "新增") @Post @Mapping ("${classname}/add") @SaCheckPermission("${classname}:add") - @ResponseBody public DataResult add( ${className}Entity ${classname}){ ${classname}Service.save(${classname}); return DataResult.success(); @@ -67,7 +65,6 @@ public class ${className}Controller { @ApiOperation(value = "删除") @Delete @Mapping ("${classname}/delete") @SaCheckPermission("${classname}:delete") - @ResponseBody public DataResult delete( @ApiParam(value = "id集合") List ids){ ${classname}Service.removeByIds(ids); return DataResult.success(); @@ -76,7 +73,6 @@ public class ${className}Controller { @ApiOperation(value = "更新") @Put @Mapping ("${classname}/update") @SaCheckPermission("${classname}:update") - @ResponseBody public DataResult update( ${className}Entity ${classname}){ ${classname}Service.updateById(${classname}); return DataResult.success(); diff --git a/src/main/resources/template/ServiceImpl.java.vm b/src/main/resources/template/ServiceImpl.java.vm index 531279b..72e5b46 100644 --- a/src/main/resources/template/ServiceImpl.java.vm +++ b/src/main/resources/template/ServiceImpl.java.vm @@ -8,7 +8,7 @@ import ${package}.entity.${className}Entity; import ${package}.service.${className}Service; -@Service("${classname}Service") +@Component(value = "${classname}Service",typed = true) public class ${className}ServiceImpl extends ServiceImpl<${className}Mapper, ${className}Entity> implements ${className}Service { diff --git a/src/main/resources/template/list.html.vm b/src/main/resources/template/list.html.vm index 7ae5449..16f480d 100644 --- a/src/main/resources/template/list.html.vm +++ b/src/main/resources/template/list.html.vm @@ -5,7 +5,7 @@ Title -
+