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 35954a9fd..669fcb97c 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,36 +1,34 @@ package com.ruoyi.web.controller.system; -import java.util.List; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import com.ruoyi.common.constant.UserConstants; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.SysOssConfig; -import lombok.RequiredArgsConstructor; - -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.*; - -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import com.ruoyi.common.annotation.RepeatSubmit; +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.poi.ExcelUtil; -import com.ruoyi.system.domain.vo.SysOssConfigVo; +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; -import com.ruoyi.common.core.page.TableDataInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +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 @@ -57,18 +55,6 @@ public class SysOssConfigController extends BaseController { return iSysOssConfigService.queryPageList(bo); } - /** - * 导出云存储配置列表 - */ - @ApiOperation("导出云存储配置列表") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:export')") - @Log(title = "云存储配置", businessType = BusinessType.EXPORT) - @GetMapping("/export") - public void export(@Validated SysOssConfigBo bo, HttpServletResponse response) { - List list = iSysOssConfigService.queryList(bo); - ExcelUtil.exportExcel(list, "云存储配置", SysOssConfigVo.class, response); - } - /** * 获取云存储配置详细信息 */ @@ -121,6 +107,10 @@ public class SysOssConfigController extends BaseController { @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); } @@ -131,7 +121,6 @@ public class SysOssConfigController extends BaseController { @Log(title = "云存储状态修改", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public AjaxResult changeStatus(@RequestBody SysOssConfig sysOssConfig) { - sysOssConfig.setUpdateBy(getUsername()); return toAjax(iSysOssConfigService.updateOssConfigStatus(sysOssConfig)); } } 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 95488ed98..2836f2673 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 @@ -33,26 +33,33 @@ public class SysOssConfigBo extends BaseEntity { /** * 配置key */ - @ApiModelProperty(value = "配置key", required = true) - @NotBlank(message = "配置key不能为空", groups = { AddGroup.class, EditGroup.class }) + @ApiModelProperty(value = "configKey", required = true) + @NotBlank(message = "configKey不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(min = 2, max = 100, message = "configKey长度必须介于2和20 之间") private String configKey; /** * accessKey */ @ApiModelProperty(value = "accessKey") + @NotBlank(message = "accessKey不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(min = 2, max = 100, message = "accessKey长度必须介于2和100 之间") private String accessKey; /** * 秘钥 */ @ApiModelProperty(value = "secretKey") + @NotBlank(message = "secretKey不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(min = 2, max = 100, message = "secretKey长度必须介于2和100 之间") private String secretKey; /** * 桶名称 */ - @ApiModelProperty(value = "桶名称") + @ApiModelProperty(value = "bucketName") + @NotBlank(message = "bucketName不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(min = 2, max = 100, message = "bucketName长度必须介于2和100之间") private String bucketName; /** @@ -64,7 +71,9 @@ public class SysOssConfigBo extends BaseEntity { /** * 访问站点 */ - @ApiModelProperty(value = "访问站点") + @ApiModelProperty(value = "endpoint") + @NotBlank(message = "endpoint不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(min = 2, max = 100, message = "endpoint长度必须介于2和100之间") private String endpoint; /** @@ -76,7 +85,7 @@ public class SysOssConfigBo extends BaseEntity { /** * 域 */ - @ApiModelProperty(value = "域") + @ApiModelProperty(value = "region") private String region; /** @@ -109,5 +118,9 @@ 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 be6225527..06b00d331 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 @@ -33,71 +33,60 @@ public class SysOssConfigVo { /** * 配置key */ - @ExcelProperty(value = "配置key") @ApiModelProperty("配置key") private String configKey; /** * accessKey */ - @ExcelProperty(value = "accessKey") @ApiModelProperty("accessKey") private String accessKey; /** * 秘钥 */ - @ExcelProperty(value = "secretKey") @ApiModelProperty("secretKey") private String secretKey; /** * 桶名称 */ - @ExcelProperty(value = "桶名称") @ApiModelProperty("桶名称") private String bucketName; /** * 前缀 */ - @ExcelProperty(value = "前缀") @ApiModelProperty("前缀") private String prefix; /** * 访问站点 */ - @ExcelProperty(value = "访问站点") @ApiModelProperty("访问站点") private String endpoint; /** * 是否htpps(0否 1是) */ - @ExcelProperty(value = "是否htpps", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_yes_no") @ApiModelProperty("是否htpps(0否 1是)") private String isHttps; /** * 域 */ - @ExcelProperty(value = "域") @ApiModelProperty("域") private String region; /** * 状态(0正常 1停用) */ - @ExcelProperty(value = "状态(0正常 1停用)") @ApiModelProperty("状态(0正常 1停用)") private String status; /** * 扩展字段 */ - @ExcelProperty(value = "扩展字段") @ApiModelProperty("扩展字段") private String ext1; 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 01d9514bf..76b3f110c 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 @@ -27,10 +27,6 @@ public interface ISysOssConfigService extends IServicePlus queryPageList(SysOssConfigBo bo); - /** - * 查询列表 - */ - List queryList(SysOssConfigBo bo); /** * 根据新增业务对象插入云存储配置 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java index 4fde17d66..fdce38500 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java @@ -8,11 +8,14 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.CustomException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.oss.constant.CloudConstant; import com.ruoyi.system.domain.SysConfig; +import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,8 +44,9 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl queryList(SysOssConfigBo bo) { - return listVo(buildQueryWrapper(bo)); - } private LambdaQueryWrapper buildQueryWrapper(SysOssConfigBo bo) { Map params = bo.getParams(); @@ -93,12 +93,14 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } return removeByIds(ids); } + /** + * 判断configKey是否唯一 + * @param bo + * @return + */ @Override public String checkConfigKeyUnique(SysOssConfigBo bo) { Long ossConfigId = StringUtils.isNull(bo.getOssConfigId()) ? -1L : bo.getOssConfigId(); @@ -111,23 +113,20 @@ public class SysOssConfigServiceImpl extends ServicePlusImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysConfig::getConfigKey,sysConfigOss); - List sysConfigs = iSysConfigService.list(queryWrapper); - SysConfig config = null; - if(ObjectUtil.isNotNull(sysConfigs)){ - config = sysConfigs.get(0); - } - //更新sysconfig - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(SysConfig::getConfigKey,sysConfigOss); - updateWrapper.set(SysConfig::getConfigValue,sysOssConfig.getConfigKey()); - boolean bool = iSysConfigService.update(updateWrapper); - if(bool){ - //更新redis缓存 - redisCache.setCacheObject(getCacheKey(config.getConfigKey()), sysOssConfig.getConfigKey()); + queryWrapper.eq(SysConfig::getConfigKey, CloudConstant.CLOUD_STORAGE_CONFIG_KEY); + SysConfig sysConfig = sysConfigMapper.selectOne(queryWrapper); + + if(ObjectUtil.isNotNull(sysConfig)){ + sysConfig.setConfigValue(sysOssConfig.getConfigKey()); + iSysConfigService.updateConfig(sysConfig); } return baseMapper.updateById(sysOssConfig); } diff --git a/ruoyi-ui/src/views/system/ossConfig/index.vue b/ruoyi-ui/src/views/system/ossConfig/index.vue index a55a12752..3d8525f24 100644 --- a/ruoyi-ui/src/views/system/ossConfig/index.vue +++ b/ruoyi-ui/src/views/system/ossConfig/index.vue @@ -1,27 +1,41 @@