From 824635df7f95b68ff493b904071e6c053fad9f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Fri, 13 Aug 2021 12:37:34 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BF=AE=E6=AD=A3=20PR=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysOssConfigController.java | 42 +- .../com/ruoyi/system/domain/SysOssConfig.java | 2 +- .../system/domain/bo/SysOssConfigBo.java | 50 ++- .../system/domain/vo/SysOssConfigVo.java | 26 +- .../system/mapper/SysOssConfigMapper.java | 9 +- .../system/service/ISysOssConfigService.java | 24 +- .../service/impl/SysOssConfigServiceImpl.java | 99 ++--- .../system/{sysOssConfig.js => ossConfig.js} | 24 +- ruoyi-ui/src/router/index.js | 13 + .../{ossConfig/index.vue => oss/config.vue} | 392 ++++++++---------- ruoyi-ui/src/views/system/oss/index.vue | 15 +- sql/oss.sql | 31 ++ sql/sys_oss_config.sql | 45 -- 13 files changed, 341 insertions(+), 431 deletions(-) rename ruoyi-ui/src/api/system/{sysOssConfig.js => ossConfig.js} (52%) rename ruoyi-ui/src/views/system/{ossConfig/index.vue => oss/config.vue} (51%) delete mode 100644 sql/sys_oss_config.sql diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java index 669fcb97..f798ca23 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java @@ -1,19 +1,13 @@ package com.ruoyi.web.controller.system; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; -import com.ruoyi.common.constant.Constants; -import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.domain.bo.SysOssConfigBo; import com.ruoyi.system.domain.vo.SysOssConfigVo; import com.ruoyi.system.service.ISysOssConfigService; @@ -28,19 +22,19 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Arrays; -import java.util.List; /** * 云存储配置Controller * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 */ @Validated @Api(value = "云存储配置控制器", tags = {"云存储配置管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController -@RequestMapping("/system/sysOssConfig") +@RequestMapping("/system/oss/config") public class SysOssConfigController extends BaseController { private final ISysOssConfigService iSysOssConfigService; @@ -49,7 +43,7 @@ public class SysOssConfigController extends BaseController { * 查询云存储配置列表 */ @ApiOperation("查询云存储配置列表") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:list')") + @PreAuthorize("@ss.hasPermi('system:oss:list')") @GetMapping("/list") public TableDataInfo list(@Validated SysOssConfigBo bo) { return iSysOssConfigService.queryPageList(bo); @@ -59,7 +53,7 @@ public class SysOssConfigController extends BaseController { * 获取云存储配置详细信息 */ @ApiOperation("获取云存储配置详细信息") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:query')") + @PreAuthorize("@ss.hasPermi('system:oss:query')") @GetMapping("/{ossConfigId}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("ossConfigId") Integer ossConfigId) { @@ -70,15 +64,11 @@ public class SysOssConfigController extends BaseController { * 新增云存储配置 */ @ApiOperation("新增云存储配置") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:add')") + @PreAuthorize("@ss.hasPermi('system:oss:add')") @Log(title = "云存储配置", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public AjaxResult add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { - if (StringUtils.isNotEmpty(bo.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(iSysOssConfigService.checkConfigKeyUnique(bo))) { - return AjaxResult.error("新增云配置'" + bo.getConfigKey() + "'失败,configKey已存在"); - } return toAjax(iSysOssConfigService.insertByBo(bo) ? 1 : 0); } @@ -86,15 +76,11 @@ public class SysOssConfigController extends BaseController { * 修改云存储配置 */ @ApiOperation("修改云存储配置") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:edit')") + @PreAuthorize("@ss.hasPermi('system:oss:edit')") @Log(title = "云存储配置", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public AjaxResult edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { - if (StringUtils.isNotEmpty(bo.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(iSysOssConfigService.checkConfigKeyUnique(bo))) { - return AjaxResult.error("修改云配置'" + bo.getConfigKey() + "'失败,configKey已存在"); - } return toAjax(iSysOssConfigService.updateByBo(bo) ? 1 : 0); } @@ -102,25 +88,21 @@ public class SysOssConfigController extends BaseController { * 删除云存储配置 */ @ApiOperation("删除云存储配置") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:remove')") + @PreAuthorize("@ss.hasPermi('system:oss:remove')") @Log(title = "云存储配置", businessType = BusinessType.DELETE) @DeleteMapping("/{ossConfigIds}") public AjaxResult remove(@NotEmpty(message = "主键不能为空") @PathVariable Integer[] ossConfigIds) { - List list = iSysOssConfigService.list(); - if(ObjectUtil.isNotNull(list)&&list.size()==1){ - return AjaxResult.error("必须保留一条云配置文件"); - } return toAjax(iSysOssConfigService.deleteWithValidByIds(Arrays.asList(ossConfigIds), true) ? 1 : 0); } /** * 状态修改 */ - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:edit')") + @PreAuthorize("@ss.hasPermi('system:oss:edit')") @Log(title = "云存储状态修改", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysOssConfig sysOssConfig) { - return toAjax(iSysOssConfigService.updateOssConfigStatus(sysOssConfig)); + public AjaxResult changeStatus(@RequestBody SysOssConfigBo bo) { + return toAjax(iSysOssConfigService.updateOssConfigStatus(bo)); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java index cb21fecd..9f0e28e4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java @@ -60,7 +60,7 @@ public class SysOssConfig implements Serializable { private String endpoint; /** - * 是否htpps(0否 1是) + * 是否https(0否 1是) */ private String isHttps; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java index 2836f267..3e8defc9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java @@ -1,23 +1,23 @@ package com.ruoyi.system.domain.bo; -import com.baomidou.mybatisplus.annotation.TableId; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.validation.constraints.*; -import java.util.Date; - -import com.ruoyi.common.core.domain.BaseEntity; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; /** * 云存储配置业务对象 sys_oss_config * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 */ @Data @@ -28,8 +28,10 @@ public class SysOssConfigBo extends BaseEntity { /** * 主建 */ - @ApiModelProperty("主建") - private Integer ossConfigId; + @ApiModelProperty(value = "主建", required = true) + @NotNull(message = "主建不能为空", groups = { EditGroup.class }) + private Long ossConfigId; + /** * 配置key */ @@ -41,7 +43,7 @@ public class SysOssConfigBo extends BaseEntity { /** * accessKey */ - @ApiModelProperty(value = "accessKey") + @ApiModelProperty(value = "accessKey", required = true) @NotBlank(message = "accessKey不能为空", groups = { AddGroup.class, EditGroup.class }) @Size(min = 2, max = 100, message = "accessKey长度必须介于2和100 之间") private String accessKey; @@ -49,7 +51,7 @@ public class SysOssConfigBo extends BaseEntity { /** * 秘钥 */ - @ApiModelProperty(value = "secretKey") + @ApiModelProperty(value = "secretKey", required = true) @NotBlank(message = "secretKey不能为空", groups = { AddGroup.class, EditGroup.class }) @Size(min = 2, max = 100, message = "secretKey长度必须介于2和100 之间") private String secretKey; @@ -57,7 +59,7 @@ public class SysOssConfigBo extends BaseEntity { /** * 桶名称 */ - @ApiModelProperty(value = "bucketName") + @ApiModelProperty(value = "bucketName", required = true) @NotBlank(message = "bucketName不能为空", groups = { AddGroup.class, EditGroup.class }) @Size(min = 2, max = 100, message = "bucketName长度必须介于2和100之间") private String bucketName; @@ -71,16 +73,22 @@ public class SysOssConfigBo extends BaseEntity { /** * 访问站点 */ - @ApiModelProperty(value = "endpoint") + @ApiModelProperty(value = "endpoint", required = true) @NotBlank(message = "endpoint不能为空", groups = { AddGroup.class, EditGroup.class }) @Size(min = 2, max = 100, message = "endpoint长度必须介于2和100之间") private String endpoint; - /** - * 是否htpps(0否 1是) - */ - @ApiModelProperty(value = "是否htpps(0否 1是)") - private String isHttps; + /** + * 是否https(Y=是,N=否) + */ + @ApiModelProperty("是否https(Y=是,N=否)") + private String isHttps; + + /** + * 状态(0=正常,1=停用) + */ + @ApiModelProperty("状态(0=正常,1=停用)") + private String status; /** * 域 @@ -118,9 +126,5 @@ public class SysOssConfigBo extends BaseEntity { */ @ApiModelProperty(value = "排序的方向", example = "asc,desc") private String isAsc; - /** - * 状态(0正常 1停用) - */ - @ApiModelProperty("状态(0正常 1停用)") - private String status; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java index 06b00d33..58e3900f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java @@ -1,21 +1,18 @@ package com.ruoyi.system.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.ruoyi.common.annotation.ExcelDictFormat; -import com.ruoyi.common.convert.ExcelDictConvert; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; /** * 云存储配置视图对象 sys_oss_config * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 */ @Data @ApiModel("云存储配置视图对象") @@ -25,10 +22,10 @@ public class SysOssConfigVo { private static final long serialVersionUID = 1L; /** - * 主建 + * 主建 */ @ApiModelProperty("主建") - private Integer ossConfigId; + private Long ossConfigId; /** * 配置key @@ -67,9 +64,9 @@ public class SysOssConfigVo { private String endpoint; /** - * 是否htpps(0否 1是) + * 是否https(Y=是,N=否) */ - @ApiModelProperty("是否htpps(0否 1是)") + @ApiModelProperty("是否https(Y=是,N=否)") private String isHttps; /** @@ -79,9 +76,9 @@ public class SysOssConfigVo { private String region; /** - * 状态(0正常 1停用) + * 状态(0=正常,1=停用) */ - @ApiModelProperty("状态(0正常 1停用)") + @ApiModelProperty("状态(0=正常,1=停用)") private String status; /** @@ -90,5 +87,10 @@ public class SysOssConfigVo { @ApiModelProperty("扩展字段") private String ext1; + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java index d55ea275..9546e732 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java @@ -1,15 +1,14 @@ package com.ruoyi.system.mapper; -import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; -import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; -import org.apache.ibatis.annotations.CacheNamespace; +import com.ruoyi.system.domain.SysOssConfig; /** * 云存储配置Mapper接口 * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 */ public interface SysOssConfigMapper extends BaseMapperPlus { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java index 76b3f110..2de440f7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java @@ -1,24 +1,24 @@ package com.ruoyi.system.service; -import com.ruoyi.system.domain.SysOssConfig; -import com.ruoyi.system.domain.vo.SysOssConfigVo; -import com.ruoyi.system.domain.bo.SysOssConfigBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.system.domain.SysOssConfig; +import com.ruoyi.system.domain.bo.SysOssConfigBo; +import com.ruoyi.system.domain.vo.SysOssConfigVo; import java.util.Collection; -import java.util.List; /** * 云存储配置Service接口 * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 */ public interface ISysOssConfigService extends IServicePlus { + /** * 查询单个 - * @return */ SysOssConfigVo queryById(Integer ossConfigId); @@ -52,15 +52,7 @@ public interface ISysOssConfigService extends IServicePlus implements ISysOssConfigService { - @Autowired - private ISysConfigService iSysConfigService; - @Autowired - private SysConfigMapper sysConfigMapper; - @Autowired - private RedisCache redisCache; + private final ISysConfigService iSysConfigService; @Override public SysOssConfigVo queryById(Integer ossConfigId){ @@ -61,11 +54,11 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl buildQueryWrapper(SysOssConfigBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey()); lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName()); - return lqw; + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus()); + return lqw; } @Override @@ -84,30 +77,33 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl ids, Boolean isValid) { + if(isValid) { + if (CollUtil.containsAll(ids, CollUtil.newArrayList(1, 2, 3, 4))) { + throw new CustomException("系统内置, 不可删除!"); + } + } return removeByIds(ids); } /** * 判断configKey是否唯一 - * @param bo - * @return */ - @Override - public String checkConfigKeyUnique(SysOssConfigBo bo) { - Long ossConfigId = StringUtils.isNull(bo.getOssConfigId()) ? -1L : bo.getOssConfigId(); + private String checkConfigKeyUnique(SysOssConfig sysOssConfig) { + long ossConfigId = StringUtils.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId(); SysOssConfig info = getOne(new LambdaQueryWrapper() .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) - .eq(SysOssConfig::getConfigKey, bo.getConfigKey()).last("limit 1")); - if (StringUtils.isNotNull(info) && info.getOssConfigId().longValue() != ossConfigId.longValue()) { + .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); + if (StringUtils.isNotNull(info) && info.getOssConfigId() != ossConfigId) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -115,31 +111,22 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysConfig::getConfigKey, CloudConstant.CLOUD_STORAGE_CONFIG_KEY); - SysConfig sysConfig = sysConfigMapper.selectOne(queryWrapper); - + @Transactional(rollbackFor = Exception.class) + public int updateOssConfigStatus(SysOssConfigBo bo) { + SysConfig sysConfig = iSysConfigService.getOne(new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, CloudConstant.CLOUD_STORAGE_CONFIG_KEY)); if(ObjectUtil.isNotNull(sysConfig)){ - sysConfig.setConfigValue(sysOssConfig.getConfigKey()); + sysConfig.setConfigValue(bo.getConfigKey()); iSysConfigService.updateConfig(sysConfig); + } else { + throw new CustomException("缺少'云存储配置KEY'参数!"); } + SysOssConfig sysOssConfig = BeanUtil.toBean(bo, SysOssConfig.class); + baseMapper.update(null, new LambdaUpdateWrapper() + .set(SysOssConfig::getStatus, "1")); return baseMapper.updateById(sysOssConfig); } - /** - * 设置cache key - * - * @param configKey 参数键 - * @return 缓存键key - */ - private String getCacheKey(String configKey) { - return Constants.SYS_CONFIG_KEY + configKey; - } - - } diff --git a/ruoyi-ui/src/api/system/sysOssConfig.js b/ruoyi-ui/src/api/system/ossConfig.js similarity index 52% rename from ruoyi-ui/src/api/system/sysOssConfig.js rename to ruoyi-ui/src/api/system/ossConfig.js index 23269b0c..2c6ae0c4 100644 --- a/ruoyi-ui/src/api/system/sysOssConfig.js +++ b/ruoyi-ui/src/api/system/ossConfig.js @@ -1,57 +1,57 @@ import request from '@/utils/request' // 查询云存储配置列表 -export function listSysOssConfig(query) { +export function listOssConfig(query) { return request({ - url: '/system/sysOssConfig/list', + url: '/system/oss/config/list', method: 'get', params: query }) } // 查询云存储配置详细 -export function getSysOssConfig(ossConfigId) { +export function getOssConfig(ossConfigId) { return request({ - url: '/system/sysOssConfig/' + ossConfigId, + url: '/system/oss/config/' + ossConfigId, method: 'get' }) } // 新增云存储配置 -export function addSysOssConfig(data) { +export function addOssConfig(data) { return request({ - url: '/system/sysOssConfig', + url: '/system/oss/config', method: 'post', data: data }) } // 修改云存储配置 -export function updateSysOssConfig(data) { +export function updateOssConfig(data) { return request({ - url: '/system/sysOssConfig', + url: '/system/oss/config', method: 'put', data: data }) } // 删除云存储配置 -export function delSysOssConfig(ossConfigId) { +export function delOssConfig(ossConfigId) { return request({ - url: '/system/sysOssConfig/' + ossConfigId, + url: '/system/oss/config/' + ossConfigId, method: 'delete' }) } // 用户状态修改 -export function changeOssConfigStatus(ossConfigId, status,configKey) { +export function changeOssConfigStatus(ossConfigId, status, configKey) { const data = { ossConfigId, status, configKey } return request({ - url: '/system/sysOssConfig/changeStatus', + url: '/system/oss/config/changeStatus', method: 'put', data: data }) diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index e1719abf..6530ad43 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -124,6 +124,19 @@ export const constantRoutes = [ } ] }, + { + path: '/system/oss-config', + component: Layout, + hidden: true, + children: [ + { + path: 'index', + component: (resolve) => require(['@/views/system/oss/config'], resolve), + name: 'OssConfig', + meta: { title: '配置管理', activeMenu: '/system/oss'} + } + ] + }, { path: '/monitor/job-log', component: Layout, diff --git a/ruoyi-ui/src/views/system/ossConfig/index.vue b/ruoyi-ui/src/views/system/oss/config.vue similarity index 51% rename from ruoyi-ui/src/views/system/ossConfig/index.vue rename to ruoyi-ui/src/views/system/oss/config.vue index 3d8525f2..9cd528c5 100644 --- a/ruoyi-ui/src/views/system/ossConfig/index.vue +++ b/ruoyi-ui/src/views/system/oss/config.vue @@ -1,41 +1,38 @@