From 4ab79d3afac3ff4c052973eef17eef915a87670d Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Wed, 28 Jan 2026 19:50:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20tool=E6=A8=A1=E5=9D=97=E5=9F=BA?= =?UTF-8?q?=E7=A1=80crud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/controller/DeviceController.java | 5 +- .../device/service/dto/DeviceInfo.java | 2 +- .../point/PointStatusController.java | 5 +- .../{ => modular}/point/dto/PointStatus.java | 2 +- nl-common/pom.xml | 14 +- .../controller/LocalStorageController.java | 114 ++++++------ nl-plugin-tool-api/pom.xml | 24 +++ nl-plugin-tool/pom.xml | 22 +++ .../controller/MockConfigController.java | 123 +++++++++++++ .../modular/mockconfig/entity/MockConfig.java | 63 +++++++ .../mockconfig/enums/MockConfigEnum.java | 34 ++++ .../mockconfig/mapper/MockConfigMapper.java | 25 +++ .../mapper/mapping/MockConfigMapper.xml | 5 + .../mockconfig/param/MockConfigAddParam.java | 50 ++++++ .../mockconfig/param/MockConfigEditParam.java | 55 ++++++ .../mockconfig/param/MockConfigIdParam.java | 35 ++++ .../mockconfig/param/MockConfigPageParam.java | 63 +++++++ .../mockconfig/service/MockConfigService.java | 80 +++++++++ .../service/impl/MockConfigServiceImpl.java | 103 +++++++++++ .../file/controller/DevFileController.java | 19 +- .../modular/file/enums/ReturnTypeEnum.java | 40 +++++ .../modular/file/service/DevFileService.java | 5 + .../file/service/impl/DevFileServiceImpl.java | 34 ++-- .../modular/user/service/SysUserService.java | 8 +- nl-vue/src/api/mock/mockConfigApi.js | 28 +++ nl-vue/src/views/mock/mockconfig/form.vue | 99 +++++++++++ nl-vue/src/views/mock/mockconfig/index.vue | 164 ++++++++++++++++++ nl-web-app/pom.xml | 5 + pom.xml | 25 +-- 29 files changed, 1150 insertions(+), 101 deletions(-) rename nl-base-data/src/main/java/org/nl/{ => modular}/device/controller/DeviceController.java (95%) rename nl-base-data/src/main/java/org/nl/{ => modular}/device/service/dto/DeviceInfo.java (94%) rename nl-base-data/src/main/java/org/nl/{ => modular}/point/PointStatusController.java (95%) rename nl-base-data/src/main/java/org/nl/{ => modular}/point/dto/PointStatus.java (93%) create mode 100644 nl-plugin-tool-api/pom.xml create mode 100644 nl-plugin-tool/pom.xml create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/enums/MockConfigEnum.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/MockConfigMapper.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/mapping/MockConfigMapper.xml create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigAddParam.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigIdParam.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigPageParam.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/MockConfigService.java create mode 100644 nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java create mode 100644 nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/enums/ReturnTypeEnum.java create mode 100644 nl-vue/src/api/mock/mockConfigApi.js create mode 100644 nl-vue/src/views/mock/mockconfig/form.vue create mode 100644 nl-vue/src/views/mock/mockconfig/index.vue diff --git a/nl-base-data/src/main/java/org/nl/device/controller/DeviceController.java b/nl-base-data/src/main/java/org/nl/modular/device/controller/DeviceController.java similarity index 95% rename from nl-base-data/src/main/java/org/nl/device/controller/DeviceController.java rename to nl-base-data/src/main/java/org/nl/modular/device/controller/DeviceController.java index 6d360b5..3b8e861 100644 --- a/nl-base-data/src/main/java/org/nl/device/controller/DeviceController.java +++ b/nl-base-data/src/main/java/org/nl/modular/device/controller/DeviceController.java @@ -10,14 +10,14 @@ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip */ -package org.nl.device.controller; +package org.nl.modular.device.controller; import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import io.swagger.v3.oas.annotations.tags.Tag; import org.nl.common.pojo.CommonResult; -import org.nl.device.service.dto.DeviceInfo; +import org.nl.modular.device.service.dto.DeviceInfo; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,7 +25,6 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; -import java.util.Random; @Tag(name = "设备模块") @RestController() diff --git a/nl-base-data/src/main/java/org/nl/device/service/dto/DeviceInfo.java b/nl-base-data/src/main/java/org/nl/modular/device/service/dto/DeviceInfo.java similarity index 94% rename from nl-base-data/src/main/java/org/nl/device/service/dto/DeviceInfo.java rename to nl-base-data/src/main/java/org/nl/modular/device/service/dto/DeviceInfo.java index dd5770a..a5a969b 100644 --- a/nl-base-data/src/main/java/org/nl/device/service/dto/DeviceInfo.java +++ b/nl-base-data/src/main/java/org/nl/modular/device/service/dto/DeviceInfo.java @@ -1,4 +1,4 @@ -package org.nl.device.service.dto; +package org.nl.modular.device.service.dto; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; diff --git a/nl-base-data/src/main/java/org/nl/point/PointStatusController.java b/nl-base-data/src/main/java/org/nl/modular/point/PointStatusController.java similarity index 95% rename from nl-base-data/src/main/java/org/nl/point/PointStatusController.java rename to nl-base-data/src/main/java/org/nl/modular/point/PointStatusController.java index 53bcaa1..5420673 100644 --- a/nl-base-data/src/main/java/org/nl/point/PointStatusController.java +++ b/nl-base-data/src/main/java/org/nl/modular/point/PointStatusController.java @@ -10,14 +10,13 @@ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip */ -package org.nl.point; +package org.nl.modular.point; import cn.dev33.satoken.annotation.SaIgnore; -import com.alibaba.fastjson.JSONObject; import io.swagger.v3.oas.annotations.tags.Tag; import org.nl.common.pojo.CommonResult; -import org.nl.point.dto.PointStatus; +import org.nl.modular.point.dto.PointStatus; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/nl-base-data/src/main/java/org/nl/point/dto/PointStatus.java b/nl-base-data/src/main/java/org/nl/modular/point/dto/PointStatus.java similarity index 93% rename from nl-base-data/src/main/java/org/nl/point/dto/PointStatus.java rename to nl-base-data/src/main/java/org/nl/modular/point/dto/PointStatus.java index 6dc65e1..6a72d6f 100644 --- a/nl-base-data/src/main/java/org/nl/point/dto/PointStatus.java +++ b/nl-base-data/src/main/java/org/nl/modular/point/dto/PointStatus.java @@ -1,4 +1,4 @@ -package org.nl.point.dto; +package org.nl.modular.point.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/nl-common/pom.xml b/nl-common/pom.xml index fad9506..3eeaa14 100644 --- a/nl-common/pom.xml +++ b/nl-common/pom.xml @@ -21,10 +21,10 @@ org.openjdk.nashorn nashorn-core - - nl.sdk - language - + + + + org.springframework.boot @@ -132,5 +132,11 @@ com.alibaba easyexcel + + + + cn.dev33 + sa-token-core + diff --git a/nl-common/src/main/java/org/nl/common/localStorage/controller/LocalStorageController.java b/nl-common/src/main/java/org/nl/common/localStorage/controller/LocalStorageController.java index eefdb93..35055e5 100644 --- a/nl-common/src/main/java/org/nl/common/localStorage/controller/LocalStorageController.java +++ b/nl-common/src/main/java/org/nl/common/localStorage/controller/LocalStorageController.java @@ -1,59 +1,59 @@ +//// +//// Source code recreated from a .class file by IntelliJ IDEA +//// (powered by FernFlower decompiler) +//// +//package org.nl.common.localStorage.controller; // -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) // -package org.nl.common.localStorage.controller; - - -import cn.dev33.satoken.annotation.SaIgnore; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.lang3.StringUtils; -import org.nl.common.localStorage.service.LocalStorageService; -import org.nl.common.localStorage.service.entity.LocalStorage; -import org.nl.common.pojo.CommonResult; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@RestController -@RequestMapping({"/api/localStorage"}) -@SaIgnore -public class LocalStorageController { - - @Autowired - private LocalStorageService localStorageService; - - @GetMapping - public CommonResult query(@RequestParam String annex) { - List list = new ArrayList<>(); - if (StringUtils.isNotEmpty(annex)){ - String[] split = annex.split(","); - list = localStorageService.listByIds(Arrays.asList(split)); - } - return CommonResult.data(list); - } - @PostMapping({"/upload"}) - public CommonResult upload(@RequestParam MultipartFile file) { - LocalStorage localStorage = localStorageService.upload(file); - return CommonResult.data(localStorage); - } - @GetMapping({"/download"}) - public void download(@RequestParam Long storageId , HttpServletResponse response, HttpServletRequest request) throws IOException { - this.localStorageService.downloadFile(this.localStorageService.getById(storageId),request, response); - } - - - @DeleteMapping - public CommonResult delete(@RequestBody Long[] ids) { - localStorageService.removeByIds(Arrays.asList(ids)); - return CommonResult.ok(); - } - -} +//import cn.dev33.satoken.annotation.SaIgnore; +//import jakarta.servlet.http.HttpServletRequest; +//import jakarta.servlet.http.HttpServletResponse; +//import org.apache.commons.lang3.StringUtils; +//import org.nl.common.localStorage.service.LocalStorageService; +//import org.nl.common.localStorage.service.entity.LocalStorage; +//import org.nl.common.pojo.CommonResult; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +//import org.springframework.web.multipart.MultipartFile; +// +// +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +// +//@RestController +//@RequestMapping({"/api/localStorage"}) +//@SaIgnore +//public class LocalStorageController { +// +// @Autowired +// private LocalStorageService localStorageService; +// +// @GetMapping +// public CommonResult query(@RequestParam String annex) { +// List list = new ArrayList<>(); +// if (StringUtils.isNotEmpty(annex)){ +// String[] split = annex.split(","); +// list = localStorageService.listByIds(Arrays.asList(split)); +// } +// return CommonResult.data(list); +// } +// @PostMapping({"/upload"}) +// public CommonResult upload(@RequestParam MultipartFile file) { +// LocalStorage localStorage = localStorageService.upload(file); +// return CommonResult.data(localStorage); +// } +// @GetMapping({"/download"}) +// public void download(@RequestParam Long storageId , HttpServletResponse response, HttpServletRequest request) throws IOException { +// this.localStorageService.downloadFile(this.localStorageService.getById(storageId),request, response); +// } +// +// +// @DeleteMapping +// public CommonResult delete(@RequestBody Long[] ids) { +// localStorageService.removeByIds(Arrays.asList(ids)); +// return CommonResult.ok(); +// } +// +//} diff --git a/nl-plugin-tool-api/pom.xml b/nl-plugin-tool-api/pom.xml new file mode 100644 index 0000000..f820237 --- /dev/null +++ b/nl-plugin-tool-api/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.nl + nl-tool-platform + 3.0.0 + + + org.nl.tool.api + nl-plugin-tool-api + 工具类的api模块 + + + + + org.nl + nl-common + + + + \ No newline at end of file diff --git a/nl-plugin-tool/pom.xml b/nl-plugin-tool/pom.xml new file mode 100644 index 0000000..1929adf --- /dev/null +++ b/nl-plugin-tool/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.nl + nl-tool-platform + 3.0.0 + + + org.nl.tool + nl-plugin-tool + + + + org.nl.tool.api + nl-plugin-tool-api + + + + \ No newline at end of file diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java new file mode 100644 index 0000000..2c371fb --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java @@ -0,0 +1,123 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.nl.common.annotation.CommonLog; +import org.nl.common.pojo.CommonResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import org.nl.tool.mock.modular.mockconfig.entity.MockConfig; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigAddParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigEditParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigIdParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigPageParam; +import org.nl.tool.mock.modular.mockconfig.service.MockConfigService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * Mock配置表控制器 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ +@Tag(name = "Mock配置表控制器") +@RestController +@Validated +public class MockConfigController { + + @Resource + private MockConfigService mockConfigService; + + /** + * 获取Mock配置表分页 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + @Operation(summary = "获取Mock配置表分页") + @SaCheckPermission("/mock/mockconfig/page") + @GetMapping("/mock/mockconfig/page") + public CommonResult> page(MockConfigPageParam mockConfigPageParam) { + return CommonResult.data(mockConfigService.page(mockConfigPageParam)); + } + + /** + * 添加Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + @Operation(summary = "添加Mock配置表") + @CommonLog("添加Mock配置表") + @SaCheckPermission("/mock/mockconfig/add") + @PostMapping("/mock/mockconfig/add") + public CommonResult add(@RequestBody @Valid MockConfigAddParam mockConfigAddParam) { + mockConfigService.add(mockConfigAddParam); + return CommonResult.ok(); + } + + /** + * 编辑Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + @Operation(summary = "编辑Mock配置表") + @CommonLog("编辑Mock配置表") + @SaCheckPermission("/mock/mockconfig/edit") + @PostMapping("/mock/mockconfig/edit") + public CommonResult edit(@RequestBody @Valid MockConfigEditParam mockConfigEditParam) { + mockConfigService.edit(mockConfigEditParam); + return CommonResult.ok(); + } + + /** + * 删除Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + @Operation(summary = "删除Mock配置表") + @CommonLog("删除Mock配置表") + @SaCheckPermission("/mock/mockconfig/delete") + @PostMapping("/mock/mockconfig/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List mockConfigIdParamList) { + mockConfigService.delete(mockConfigIdParamList); + return CommonResult.ok(); + } + + /** + * 获取Mock配置表详情 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + @Operation(summary = "获取Mock配置表详情") + @SaCheckPermission("/mock/mockconfig/detail") + @GetMapping("/mock/mockconfig/detail") + public CommonResult detail(@Valid MockConfigIdParam mockConfigIdParam) { + return CommonResult.data(mockConfigService.detail(mockConfigIdParam)); + } +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java new file mode 100644 index 0000000..a0a4620 --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java @@ -0,0 +1,63 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * Mock配置表实体 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +@Setter +@TableName("tool_mock_config") +public class MockConfig { + + /** 主键ID */ + @TableId + @Schema(description = "主键ID") + private String id; + + /** 接口路径,如:/api/user/info */ + @Schema(description = "接口路径,如:/api/user/info") + private String apiPath; + + /** 请求方法:GET, POST, PUT, DELETE */ + @Schema(description = "请求方法:GET, POST, PUT, DELETE") + private String apiMethod; + + /** 返回的JSON数据 */ + @Schema(description = "返回的JSON数据") + private String responseJson; + + /** 是否启用:true-启用,false-禁用 */ + @Schema(description = "是否启用:true-启用,false-禁用") + private Boolean isEnabled; + + /** 创建时间 */ + @Schema(description = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 更新时间 */ + @Schema(description = "更新时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/enums/MockConfigEnum.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/enums/MockConfigEnum.java new file mode 100644 index 0000000..0ffa6ae --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/enums/MockConfigEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.enums; + +import lombok.Getter; + +/** + * Mock配置表枚举 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +public enum MockConfigEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + MockConfigEnum(String value) { + this.value = value; + } +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/MockConfigMapper.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/MockConfigMapper.java new file mode 100644 index 0000000..f44717e --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/MockConfigMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.tool.mock.modular.mockconfig.entity.MockConfig; + +/** + * Mock配置表Mapper接口 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +public interface MockConfigMapper extends BaseMapper { +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/mapping/MockConfigMapper.xml b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/mapping/MockConfigMapper.xml new file mode 100644 index 0000000..824722c --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/mapper/mapping/MockConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigAddParam.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigAddParam.java new file mode 100644 index 0000000..ad85879 --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigAddParam.java @@ -0,0 +1,50 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * Mock配置表添加参数 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +@Setter +public class MockConfigAddParam { + + /** 接口路径,如:/api/user/info */ + @Schema(description = "接口路径,如:/api/user/info") + private String apiPath; + + /** 请求方法:GET, POST, PUT, DELETE */ + @Schema(description = "请求方法:GET, POST, PUT, DELETE") + private String apiMethod; + + /** 返回的JSON数据 */ + @Schema(description = "返回的JSON数据") + private String responseJson; + + /** 是否启用:true-启用,false-禁用 */ + @Schema(description = "是否启用:true-启用,false-禁用") + private Boolean isEnabled; + +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java new file mode 100644 index 0000000..a89adcb --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java @@ -0,0 +1,55 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * Mock配置表编辑参数 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +@Setter +public class MockConfigEditParam { + + /** 主键ID */ + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "id不能为空") + private String id; + + /** 接口路径,如:/api/user/info */ + @Schema(description = "接口路径,如:/api/user/info") + private String apiPath; + + /** 请求方法:GET, POST, PUT, DELETE */ + @Schema(description = "请求方法:GET, POST, PUT, DELETE") + private String apiMethod; + + /** 返回的JSON数据 */ + @Schema(description = "返回的JSON数据") + private String responseJson; + + /** 是否启用:true-启用,false-禁用 */ + @Schema(description = "是否启用:true-启用,false-禁用") + private Boolean isEnabled; + +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigIdParam.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigIdParam.java new file mode 100644 index 0000000..214b29f --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * Mock配置表Id参数 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +@Setter +public class MockConfigIdParam { + + /** 主键ID */ + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigPageParam.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigPageParam.java new file mode 100644 index 0000000..1c00df0 --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigPageParam.java @@ -0,0 +1,63 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * Mock配置表查询参数 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Getter +@Setter +public class MockConfigPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + + /** 接口路径,如:/api/user/info */ + @Schema(description = "接口路径,如:/api/user/info") + private String apiPath; + + /** 请求方法:GET, POST, PUT, DELETE */ + @Schema(description = "请求方法:GET, POST, PUT, DELETE") + private String apiMethod; + + /** 是否启用:true-启用,false-禁用 */ + @Schema(description = "是否启用:true-启用,false-禁用") + private Boolean isEnabled; + +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/MockConfigService.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/MockConfigService.java new file mode 100644 index 0000000..5dd5bf3 --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/MockConfigService.java @@ -0,0 +1,80 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.tool.mock.modular.mockconfig.entity.MockConfig; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigAddParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigEditParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigIdParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigPageParam; + +import java.util.List; + +/** + * Mock配置表Service接口 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +public interface MockConfigService extends IService { + + /** + * 获取Mock配置表分页 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + Page page(MockConfigPageParam mockConfigPageParam); + + /** + * 添加Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + void add(MockConfigAddParam mockConfigAddParam); + + /** + * 编辑Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + void edit(MockConfigEditParam mockConfigEditParam); + + /** + * 删除Mock配置表 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + void delete(List mockConfigIdParamList); + + /** + * 获取Mock配置表详情 + * + * @author liyongde + * @date 2026/01/28 17:50 + */ + MockConfig detail(MockConfigIdParam mockConfigIdParam); + + /** + * 获取Mock配置表详情 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ + MockConfig queryEntity(String id); +} diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java new file mode 100644 index 0000000..5f66230 --- /dev/null +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java @@ -0,0 +1,103 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package org.nl.tool.mock.modular.mockconfig.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.nl.common.enums.CommonSortOrderEnum; +import org.nl.common.exception.CommonException; +import org.nl.common.page.CommonPageRequest; +import org.nl.tool.mock.modular.mockconfig.entity.MockConfig; +import org.nl.tool.mock.modular.mockconfig.mapper.MockConfigMapper; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigAddParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigEditParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigIdParam; +import org.nl.tool.mock.modular.mockconfig.param.MockConfigPageParam; +import org.nl.tool.mock.modular.mockconfig.service.MockConfigService; + +import java.util.List; + +/** + * Mock配置表Service接口实现类 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +@Service +public class MockConfigServiceImpl extends ServiceImpl implements MockConfigService { + + @Override + public Page page(MockConfigPageParam mockConfigPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isNotEmpty(mockConfigPageParam.getApiPath())) { + queryWrapper.lambda().eq(MockConfig::getApiPath, mockConfigPageParam.getApiPath()); + } + if(ObjectUtil.isNotEmpty(mockConfigPageParam.getApiMethod())) { + queryWrapper.lambda().eq(MockConfig::getApiMethod, mockConfigPageParam.getApiMethod()); + } + if(ObjectUtil.isNotEmpty(mockConfigPageParam.getIsEnabled())) { + queryWrapper.lambda().eq(MockConfig::getIsEnabled, mockConfigPageParam.getIsEnabled()); + } + if(ObjectUtil.isAllNotEmpty(mockConfigPageParam.getSortField(), mockConfigPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(mockConfigPageParam.getSortOrder()); + queryWrapper.orderBy(true, mockConfigPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(mockConfigPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(MockConfig::getId); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(MockConfigAddParam mockConfigAddParam) { + MockConfig mockConfig = BeanUtil.toBean(mockConfigAddParam, MockConfig.class); + this.save(mockConfig); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(MockConfigEditParam mockConfigEditParam) { + MockConfig mockConfig = this.queryEntity(mockConfigEditParam.getId()); + BeanUtil.copyProperties(mockConfigEditParam, mockConfig); + this.updateById(mockConfig); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List mockConfigIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(mockConfigIdParamList, MockConfigIdParam::getId)); + } + + @Override + public MockConfig detail(MockConfigIdParam mockConfigIdParam) { + return this.queryEntity(mockConfigIdParam.getId()); + } + + @Override + public MockConfig queryEntity(String id) { + MockConfig mockConfig = this.getById(id); + if(ObjectUtil.isEmpty(mockConfig)) { + throw new CommonException("Mock配置表不存在,id值为:{}", id); + } + return mockConfig; + } +} diff --git a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/controller/DevFileController.java b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/controller/DevFileController.java index e0e4c7e..d285e80 100644 --- a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/controller/DevFileController.java +++ b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/controller/DevFileController.java @@ -16,23 +16,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; +import org.nl.common.annotation.CommonLog; +import org.nl.common.pojo.CommonResult; +import org.nl.dev.api.DevConfigApi; import org.nl.dev.modular.file.entity.DevFile; import org.nl.dev.modular.file.enums.DevFileEngineTypeEnum; import org.nl.dev.modular.file.param.DevFileIdParam; import org.nl.dev.modular.file.param.DevFileListParam; import org.nl.dev.modular.file.param.DevFilePageParam; import org.nl.dev.modular.file.param.DevFileUrlListParam; +import org.nl.dev.modular.file.service.DevFileService; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.nl.common.annotation.CommonLog; -import org.nl.common.pojo.CommonResult; -import org.nl.dev.api.DevConfigApi; -import org.nl.dev.modular.file.service.DevFileService; import java.io.IOException; import java.util.List; @@ -262,4 +263,14 @@ public class DevFileController { public CommonResult> getFileListByUrlList(@RequestBody @Valid DevFileUrlListParam devFileUrlListParam) { return CommonResult.data(devFileService.getFileListByUrlList(devFileUrlListParam)); } + + @Operation(summary = "上传文件") + @PostMapping({"/api/localStorage/upload"}) + public CommonResult upload(@RequestParam MultipartFile file) { + return CommonResult.data(devFileService.upload(file)); + } + @GetMapping({"/api/localStorage/download"}) + public void download(@RequestParam String storageId , HttpServletResponse response, HttpServletRequest request) throws IOException { + this.devFileService.downloadFile(this.devFileService.getById(storageId),request, response); + } } diff --git a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/enums/ReturnTypeEnum.java b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/enums/ReturnTypeEnum.java new file mode 100644 index 0000000..cd1a5b7 --- /dev/null +++ b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/enums/ReturnTypeEnum.java @@ -0,0 +1,40 @@ +package org.nl.dev.modular.file.enums; + +/** + * + * @author: lyd + * @date: 2026/1/28 + */ +public enum ReturnTypeEnum { + /** + * 文件id + */ + FILE_ID("1"), + /** + * 下载地址 + */ + DOWNLOAD_URL("2"), + /** + * 文件对象 + */ + FILE("3"); + + private final String code; + + ReturnTypeEnum(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static ReturnTypeEnum fromCode(String code) { + for (ReturnTypeEnum type : values()) { + if (type.code.equals(code)) { + return type; + } + } + return FILE; // 默认值 + } +} diff --git a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/DevFileService.java b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/DevFileService.java index 44db824..738626a 100644 --- a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/DevFileService.java +++ b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/DevFileService.java @@ -14,6 +14,7 @@ package org.nl.dev.modular.file.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.nl.dev.modular.file.entity.DevFile; import org.nl.dev.modular.file.param.DevFileIdParam; @@ -104,4 +105,8 @@ public interface DevFileService extends IService { * @date 2022/4/24 21:18 */ DevFile queryEntity(String id); + + DevFile upload(MultipartFile file); + + void downloadFile(DevFile file, HttpServletRequest request, HttpServletResponse response); } diff --git a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/impl/DevFileServiceImpl.java b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/impl/DevFileServiceImpl.java index dea6292..e4f75cd 100644 --- a/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/impl/DevFileServiceImpl.java +++ b/nl-plugin/nl-plugin-dev/src/main/java/org/nl/dev/modular/file/service/impl/DevFileServiceImpl.java @@ -27,10 +27,12 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.math3.dfp.DfpField; import org.nl.dev.modular.file.entity.DevFile; import org.nl.dev.modular.file.enums.DevFileEngineTypeEnum; +import org.nl.dev.modular.file.enums.ReturnTypeEnum; import org.nl.dev.modular.file.param.DevFileIdParam; import org.nl.dev.modular.file.param.DevFileListParam; import org.nl.dev.modular.file.param.DevFilePageParam; @@ -67,12 +69,12 @@ public class DevFileServiceImpl extends ServiceImpl impl @Override public String uploadReturnId(String engine, MultipartFile file) { - return this.storageFile(engine, file, true); + return this.storageFile(engine, file, ReturnTypeEnum.FILE_ID); } @Override public String uploadReturnUrl(String engine, MultipartFile file) { - return this.storageFile(engine, file, false); + return this.storageFile(engine, file, ReturnTypeEnum.DOWNLOAD_URL); } @Override @@ -127,11 +129,11 @@ public class DevFileServiceImpl extends ServiceImpl impl /** * 存储文件 - * + * 默认返回实体 * @author xuyuxiang * @date 2022/6/16 16:24 **/ - private String storageFile(String engine, MultipartFile file, boolean returnFileId) { + private T storageFile(String engine, MultipartFile file, ReturnTypeEnum returnType) { // 如果引擎为空,默认使用本地 if(ObjectUtil.isEmpty(engine)) { @@ -218,13 +220,11 @@ public class DevFileServiceImpl extends ServiceImpl impl this.save(devFile); - // 如果是返回id则返回文件id - if(returnFileId) { - return fileId; - } else { - // 否则返回下载地址 - return downloadUrl; - } + return switch (returnType) { + case FILE_ID -> (T) fileId; + case DOWNLOAD_URL -> (T) downloadUrl; + case FILE -> (T) devFile; + }; } /** @@ -277,6 +277,18 @@ public class DevFileServiceImpl extends ServiceImpl impl return devFile; } + @Override + public DevFile upload(MultipartFile file) { + return this.storageFile(DevFileEngineTypeEnum.LOCAL.getValue(), file, ReturnTypeEnum.FILE); + } + + @Override + public void downloadFile(DevFile file, HttpServletRequest request, HttpServletResponse response) { + String path = file.getStoragePath(); + File file2 = new File(path); + org.nl.common.util.FileUtil.downloadFile(request, response, file2, false); + } + /** * 根据文件后缀判断是否图片 * diff --git a/nl-plugin/nl-plugin-sys/src/main/java/org/nl/sys/modular/user/service/SysUserService.java b/nl-plugin/nl-plugin-sys/src/main/java/org/nl/sys/modular/user/service/SysUserService.java index 4fea2d1..1b5c199 100644 --- a/nl-plugin/nl-plugin-sys/src/main/java/org/nl/sys/modular/user/service/SysUserService.java +++ b/nl-plugin/nl-plugin-sys/src/main/java/org/nl/sys/modular/user/service/SysUserService.java @@ -18,15 +18,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.servlet.http.HttpServletResponse; import org.nl.sys.modular.group.entity.SysGroup; +import org.nl.sys.modular.org.entity.SysOrg; import org.nl.sys.modular.position.entity.SysPosition; +import org.nl.sys.modular.role.entity.SysRole; +import org.nl.sys.modular.user.entity.SysUser; import org.nl.sys.modular.user.param.*; import org.nl.sys.modular.user.result.*; import org.springframework.web.multipart.MultipartFile; -import org.nl.sys.modular.user.param.*; -import org.nl.sys.modular.user.result.*; -import org.nl.sys.modular.org.entity.SysOrg; -import org.nl.sys.modular.role.entity.SysRole; -import org.nl.sys.modular.user.entity.SysUser; import java.io.IOException; import java.util.List; diff --git a/nl-vue/src/api/mock/mockConfigApi.js b/nl-vue/src/api/mock/mockConfigApi.js new file mode 100644 index 0000000..aa205ca --- /dev/null +++ b/nl-vue/src/api/mock/mockConfigApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mock/mockconfig/` + url, ...arg) + +/** + * Mock配置表Api接口管理器 + * + * @author liyongde + * @date 2026/01/28 17:50 + **/ +export default { + // 获取Mock配置表分页 + mockConfigPage(data) { + return request('page', data, 'get') + }, + // 提交Mock配置表表单 edit为true时为编辑,默认为新增 + mockConfigSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除Mock配置表 + mockConfigDelete(data) { + return request('delete', data) + }, + // 获取Mock配置表详情 + mockConfigDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/nl-vue/src/views/mock/mockconfig/form.vue b/nl-vue/src/views/mock/mockconfig/form.vue new file mode 100644 index 0000000..ecd6b6c --- /dev/null +++ b/nl-vue/src/views/mock/mockconfig/form.vue @@ -0,0 +1,99 @@ + + + diff --git a/nl-vue/src/views/mock/mockconfig/index.vue b/nl-vue/src/views/mock/mockconfig/index.vue new file mode 100644 index 0000000..0d8e71a --- /dev/null +++ b/nl-vue/src/views/mock/mockconfig/index.vue @@ -0,0 +1,164 @@ + + + diff --git a/nl-web-app/pom.xml b/nl-web-app/pom.xml index 0cb2f13..02b77ee 100644 --- a/nl-web-app/pom.xml +++ b/nl-web-app/pom.xml @@ -94,6 +94,11 @@ org.nl nl-plugin-sys + + + org.nl.tool + nl-plugin-tool + diff --git a/pom.xml b/pom.xml index 75ce2f6..0801dc6 100644 --- a/pom.xml +++ b/pom.xml @@ -41,22 +41,23 @@ nl-web-app + nl-plugin-tool + nl-plugin-tool-api - - - - - - - - - - - - + + org.nl.tool + nl-plugin-tool + ${snowy.version} + + + org.nl.tool.api + nl-plugin-tool-api + ${snowy.version} + + org.nl nl-common