From 824635df7f95b68ff493b904071e6c053fad9f9b Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 13 八月 2021 12:37:34 +0800 Subject: [PATCH] update 修正 PR 相关问题 --- ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java | 2 ruoyi-ui/src/api/system/ossConfig.js | 58 +++ ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java | 26 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java | 24 - ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java | 99 ++--- ruoyi-ui/src/views/system/oss/index.vue | 15 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java | 42 -- /dev/null | 45 --- ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java | 9 sql/oss.sql | 31 ++ ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java | 50 +- ruoyi-ui/src/router/index.js | 13 ruoyi-ui/src/views/system/oss/config.vue | 427 ++++++++++++++++++++++++++++ 13 files changed, 652 insertions(+), 189 deletions(-) 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 669fcb9..f798ca2 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 javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Arrays; -import java.util.List; /** * 浜戝瓨鍌ㄩ厤缃瓹ontroller * - * @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 @@ * 鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛� */ @ApiOperation("鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛�") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:list')") + @PreAuthorize("@ss.hasPermi('system:oss:list')") @GetMapping("/list") public TableDataInfo<SysOssConfigVo> list(@Validated SysOssConfigBo bo) { return iSysOssConfigService.queryPageList(bo); @@ -59,7 +53,7 @@ * 鑾峰彇浜戝瓨鍌ㄩ厤缃缁嗕俊鎭� */ @ApiOperation("鑾峰彇浜戝瓨鍌ㄩ厤缃缁嗕俊鎭�") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:query')") + @PreAuthorize("@ss.hasPermi('system:oss:query')") @GetMapping("/{ossConfigId}") public AjaxResult<SysOssConfigVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖") @PathVariable("ossConfigId") Integer ossConfigId) { @@ -70,15 +64,11 @@ * 鏂板浜戝瓨鍌ㄩ厤缃� */ @ApiOperation("鏂板浜戝瓨鍌ㄩ厤缃�") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:add')") + @PreAuthorize("@ss.hasPermi('system:oss:add')") @Log(title = "浜戝瓨鍌ㄩ厤缃�", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { - if (StringUtils.isNotEmpty(bo.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(iSysOssConfigService.checkConfigKeyUnique(bo))) { - return AjaxResult.error("鏂板浜戦厤缃�'" + bo.getConfigKey() + "'澶辫触锛宑onfigKey宸插瓨鍦�"); - } return toAjax(iSysOssConfigService.insertByBo(bo) ? 1 : 0); } @@ -86,15 +76,11 @@ * 淇敼浜戝瓨鍌ㄩ厤缃� */ @ApiOperation("淇敼浜戝瓨鍌ㄩ厤缃�") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:edit')") + @PreAuthorize("@ss.hasPermi('system:oss:edit')") @Log(title = "浜戝瓨鍌ㄩ厤缃�", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { - if (StringUtils.isNotEmpty(bo.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(iSysOssConfigService.checkConfigKeyUnique(bo))) { - return AjaxResult.error("淇敼浜戦厤缃�'" + bo.getConfigKey() + "'澶辫触锛宑onfigKey宸插瓨鍦�"); - } return toAjax(iSysOssConfigService.updateByBo(bo) ? 1 : 0); } @@ -102,25 +88,21 @@ * 鍒犻櫎浜戝瓨鍌ㄩ厤缃� */ @ApiOperation("鍒犻櫎浜戝瓨鍌ㄩ厤缃�") - @PreAuthorize("@ss.hasPermi('system:sysOssConfig:remove')") + @PreAuthorize("@ss.hasPermi('system:oss:remove')") @Log(title = "浜戝瓨鍌ㄩ厤缃�", businessType = BusinessType.DELETE) @DeleteMapping("/{ossConfigIds}") public AjaxResult<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖") @PathVariable Integer[] ossConfigIds) { - List<SysOssConfig> 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 cb21fec..9f0e28e 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 @@ 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 2836f26..3e8defc 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 @@ /** * 涓诲缓 */ - @ApiModelProperty("涓诲缓") - private Integer ossConfigId; + @ApiModelProperty(value = "涓诲缓", required = true) + @NotNull(message = "涓诲缓涓嶈兘涓虹┖", groups = { EditGroup.class }) + private Long ossConfigId; + /** * 閰嶇疆key */ @@ -41,7 +43,7 @@ /** * 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 @@ /** * 绉橀挜 */ - @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 @@ /** * 妗跺悕绉� */ - @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 @@ /** * 璁块棶绔欑偣 */ - @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锛圷=鏄�,N=鍚︼級 + */ + @ApiModelProperty("鏄惁https锛圷=鏄�,N=鍚︼級") + private String isHttps; + + /** + * 鐘舵�侊紙0=姝e父,1=鍋滅敤锛� + */ + @ApiModelProperty("鐘舵�侊紙0=姝e父,1=鍋滅敤锛�") + private String status; /** * 鍩� @@ -118,9 +126,5 @@ */ @ApiModelProperty(value = "鎺掑簭鐨勬柟鍚�", example = "asc,desc") private String isAsc; - /** - * 鐘舵��(0姝e父 1鍋滅敤) - */ - @ApiModelProperty("鐘舵��(0姝e父 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 06b00d3..58e3900 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 @@ private static final long serialVersionUID = 1L; /** - * 涓诲缓 + * 涓诲缓 */ @ApiModelProperty("涓诲缓") - private Integer ossConfigId; + private Long ossConfigId; /** * 閰嶇疆key @@ -67,9 +64,9 @@ private String endpoint; /** - * 鏄惁htpps锛�0鍚� 1鏄級 + * 鏄惁https锛圷=鏄�,N=鍚︼級 */ - @ApiModelProperty("鏄惁htpps锛�0鍚� 1鏄級") + @ApiModelProperty("鏄惁https锛圷=鏄�,N=鍚︼級") private String isHttps; /** @@ -79,9 +76,9 @@ private String region; /** - * 鐘舵��(0姝e父 1鍋滅敤) + * 鐘舵�侊紙0=姝e父,1=鍋滅敤锛� */ - @ApiModelProperty("鐘舵��(0姝e父 1鍋滅敤)") + @ApiModelProperty("鐘舵�侊紙0=姝e父,1=鍋滅敤锛�") private String status; /** @@ -90,5 +87,10 @@ @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 d55ea27..9546e73 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; /** * 浜戝瓨鍌ㄩ厤缃甅apper鎺ュ彛 * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 瀛よ垷鐑熼洦 + * @date 2021-08-13 */ public interface SysOssConfigMapper extends BaseMapperPlus<SysOssConfig> { 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 76b3f11..2de440f 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; /** * 浜戝瓨鍌ㄩ厤缃甋ervice鎺ュ彛 * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 瀛よ垷鐑熼洦 + * @date 2021-08-13 */ public interface ISysOssConfigService extends IServicePlus<SysOssConfig, SysOssConfigVo> { + /** * 鏌ヨ鍗曚釜 - * @return */ SysOssConfigVo queryById(Integer ossConfigId); @@ -52,15 +52,7 @@ /** * 鍚敤鍋滅敤鐘舵�� - * @param sysOssConfig - * @return */ - int updateOssConfigStatus(SysOssConfig sysOssConfig); + int updateOssConfigStatus(SysOssConfigBo bo); - /** - * 鍒ゆ柇configkey鏄惁鍞竴 - * @param bo - * @return - */ - String checkConfigKeyUnique(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 fdce385..1de76ae 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 @@ -1,52 +1,45 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.ruoyi.common.constant.Constants; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.exception.CustomException; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.StringUtils; 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; -import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.domain.bo.SysOssConfigBo; import com.ruoyi.system.domain.vo.SysOssConfigVo; -import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.mapper.SysOssConfigMapper; +import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysOssConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; import java.util.Collection; /** * 浜戝瓨鍌ㄩ厤缃甋ervice涓氬姟灞傚鐞� * - * @author ruoyi - * @date 2021-08-11 + * @author Lion Li + * @author 瀛よ垷鐑熼洦 + * @date 2021-08-13 */ +@RequiredArgsConstructor(onConstructor_ = @Autowired) @Service public class SysOssConfigServiceImpl extends ServicePlusImpl<SysOssConfigMapper, SysOssConfig, SysOssConfigVo> 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 @@ private LambdaQueryWrapper<SysOssConfig> buildQueryWrapper(SysOssConfigBo bo) { - Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<SysOssConfig> 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 @@ /** * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙 - * - * @param entity 瀹炰綋绫绘暟鎹� */ private void validEntityBeforeSave(SysOssConfig entity){ - //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫 + if (StringUtils.isNotEmpty(entity.getConfigKey()) + && UserConstants.NOT_UNIQUE.equals(checkConfigKeyUnique(entity))) { + throw new CustomException("鎿嶄綔閰嶇疆'" + entity.getConfigKey() + "'澶辫触, 閰嶇疆key宸插瓨鍦�!"); + } } @Override public Boolean deleteWithValidByIds(Collection<Integer> 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<SysOssConfig>() .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 @@ /** * 鍚敤绂佺敤鐘舵�� - * @param sysOssConfig - * @return */ @Override - public int updateOssConfigStatus(SysOssConfig sysOssConfig) { - LambdaQueryWrapper<SysConfig> 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<SysConfig>() + .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("缂哄皯'浜戝瓨鍌ㄩ厤缃甂EY'鍙傛暟!"); } + SysOssConfig sysOssConfig = BeanUtil.toBean(bo, SysOssConfig.class); + baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>() + .set(SysOssConfig::getStatus, "1")); return baseMapper.updateById(sysOssConfig); } - - /** - * 璁剧疆cache key - * - * @param configKey 鍙傛暟閿� - * @return 缂撳瓨閿甼ey - */ - private String getCacheKey(String configKey) { - return Constants.SYS_CONFIG_KEY + configKey; - } - } diff --git a/ruoyi-ui/src/api/system/ossConfig.js b/ruoyi-ui/src/api/system/ossConfig.js new file mode 100644 index 0000000..2c6ae0c --- /dev/null +++ b/ruoyi-ui/src/api/system/ossConfig.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +// 鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛� +export function listOssConfig(query) { + return request({ + url: '/system/oss/config/list', + method: 'get', + params: query + }) +} + +// 鏌ヨ浜戝瓨鍌ㄩ厤缃缁� +export function getOssConfig(ossConfigId) { + return request({ + url: '/system/oss/config/' + ossConfigId, + method: 'get' + }) +} + +// 鏂板浜戝瓨鍌ㄩ厤缃� +export function addOssConfig(data) { + return request({ + url: '/system/oss/config', + method: 'post', + data: data + }) +} + +// 淇敼浜戝瓨鍌ㄩ厤缃� +export function updateOssConfig(data) { + return request({ + url: '/system/oss/config', + method: 'put', + data: data + }) +} + +// 鍒犻櫎浜戝瓨鍌ㄩ厤缃� +export function delOssConfig(ossConfigId) { + return request({ + url: '/system/oss/config/' + ossConfigId, + method: 'delete' + }) +} + +// 鐢ㄦ埛鐘舵�佷慨鏀� +export function changeOssConfigStatus(ossConfigId, status, configKey) { + const data = { + ossConfigId, + status, + configKey + } + return request({ + url: '/system/oss/config/changeStatus', + method: 'put', + data: data + }) +} diff --git a/ruoyi-ui/src/api/system/sysOssConfig.js b/ruoyi-ui/src/api/system/sysOssConfig.js deleted file mode 100644 index 23269b0..0000000 --- a/ruoyi-ui/src/api/system/sysOssConfig.js +++ /dev/null @@ -1,58 +0,0 @@ -import request from '@/utils/request' - -// 鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛� -export function listSysOssConfig(query) { - return request({ - url: '/system/sysOssConfig/list', - method: 'get', - params: query - }) -} - -// 鏌ヨ浜戝瓨鍌ㄩ厤缃缁� -export function getSysOssConfig(ossConfigId) { - return request({ - url: '/system/sysOssConfig/' + ossConfigId, - method: 'get' - }) -} - -// 鏂板浜戝瓨鍌ㄩ厤缃� -export function addSysOssConfig(data) { - return request({ - url: '/system/sysOssConfig', - method: 'post', - data: data - }) -} - -// 淇敼浜戝瓨鍌ㄩ厤缃� -export function updateSysOssConfig(data) { - return request({ - url: '/system/sysOssConfig', - method: 'put', - data: data - }) -} - -// 鍒犻櫎浜戝瓨鍌ㄩ厤缃� -export function delSysOssConfig(ossConfigId) { - return request({ - url: '/system/sysOssConfig/' + ossConfigId, - method: 'delete' - }) -} - -// 鐢ㄦ埛鐘舵�佷慨鏀� -export function changeOssConfigStatus(ossConfigId, status,configKey) { - const data = { - ossConfigId, - status, - configKey - } - return request({ - url: '/system/sysOssConfig/changeStatus', - method: 'put', - data: data - }) -} diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index e1719ab..6530ad4 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -125,6 +125,19 @@ ] }, { + 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, hidden: true, diff --git a/ruoyi-ui/src/views/system/oss/config.vue b/ruoyi-ui/src/views/system/oss/config.vue new file mode 100644 index 0000000..9cd528c --- /dev/null +++ b/ruoyi-ui/src/views/system/oss/config.vue @@ -0,0 +1,427 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="閰嶇疆key" prop="configKey"> + <el-select v-model="queryParams.configKey" placeholder="璇烽�夋嫨閰嶇疆key" clearable size="small"> + <el-option + v-for="configKey in configKeyOptions" + :key="configKey.configKey" + :label="configKey.label" + :value="configKey.configKey" + /> + </el-select> + </el-form-item> + <el-form-item label="妗跺悕绉�" prop="bucketName"> + <el-input + v-model="queryParams.bucketName" + placeholder="璇疯緭鍏ユ《鍚嶇О" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable size="small"> + <el-option + v-for="dict in statusOptions" + :key="dict.dictValue" + :label="dict.dictLabel" + :value="dict.dictValue" + /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:oss:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:oss:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:oss:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + :loading="exportLoading" + @click="handleExport" + v-hasPermi="['system:ossConfig:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="ossConfigList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="涓诲缓" align="center" prop="ossConfigId" v-if="false"/> + <el-table-column label="閰嶇疆key" align="center" prop="configKey" /> + <el-table-column label="璁块棶绔欑偣" align="center" prop="endpoint" width="200" /> + <el-table-column label="妗跺悕绉�" align="center" prop="bucketName" /> + <el-table-column label="鍓嶇紑" align="center" prop="prefix" /> + <el-table-column label="鍩�" align="center" prop="region" /> + <el-table-column label="鐘舵��" align="center" prop="status"> + <template slot-scope="scope"> + <el-switch + v-model="scope.row.status" + active-value="0" + inactive-value="1" + @change="handleStatusChange(scope.row)" + ></el-switch> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:oss:edit']" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:oss:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀逛簯瀛樺偍閰嶇疆瀵硅瘽妗� --> + <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <el-form-item label="閰嶇疆key" prop="configKey"> + <el-select v-model="form.configKey" placeholder="璇烽�夋嫨閰嶇疆key"> + <el-option + v-for="configKey in configKeyOptions" + :key="configKey.configKey" + :label="configKey.label" + :value="configKey.configKey" + /> + </el-select> + </el-form-item> + <el-form-item label="璁块棶绔欑偣" prop="endpoint"> + <el-input v-model="form.endpoint" placeholder="璇疯緭鍏ヨ闂珯鐐�" /> + </el-form-item> + <el-form-item label="accessKey" prop="accessKey"> + <el-input v-model="form.accessKey" placeholder="璇疯緭鍏ccessKey" /> + </el-form-item> + <el-form-item label="secretKey" prop="secretKey"> + <el-input v-model="form.secretKey" placeholder="璇疯緭鍏ョ閽�" /> + </el-form-item> + <el-form-item label="妗跺悕绉�" prop="bucketName"> + <el-input v-model="form.bucketName" placeholder="璇疯緭鍏ユ《鍚嶇О" /> + </el-form-item> + <el-form-item label="鍓嶇紑" prop="prefix"> + <el-input v-model="form.prefix" placeholder="璇疯緭鍏ュ墠缂�" /> + </el-form-item> + <el-form-item label="鏄惁HTTPS"> + <el-radio-group v-model="form.isHttps"> + <el-radio + v-for="dict in isHttpsOptions" + :key="dict.dictValue" + :label="dict.dictValue" + >{{dict.dictLabel}}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="鍩�" prop="region"> + <el-input v-model="form.region" placeholder="璇疯緭鍏ュ煙" /> + </el-form-item> + <el-form-item label="鐘舵��"> + <el-radio-group v-model="form.status"> + <el-radio + v-for="dict in statusOptions" + :key="dict.dictValue" + :label="dict.dictValue" + >{{dict.dictLabel}}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> + +import { + listOssConfig, + getOssConfig, + delOssConfig, + addOssConfig, + updateOssConfig, + changeOssConfigStatus +} from "@/api/system/ossConfig"; + +export default { + name: "OssConfig", + data() { + return { + // 鎸夐挳loading + buttonLoading: false, + // 閬僵灞� + loading: true, + // 瀵煎嚭閬僵灞� + exportLoading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 浜戝瓨鍌ㄩ厤缃〃鏍兼暟鎹� + ossConfigList: [], + // configKeyOptions + configKeyOptions: [], + configKeyDatas: [ + { configKey: "minio", label: "Minio" }, + { configKey: "qiniu", label: "涓冪墰浜�" }, + { configKey: "aliyun", label: "闃块噷浜�" }, + { configKey: "qcloud", label: "鑵捐浜�" }, + ], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏄惁https瀛楀吀 + isHttpsOptions: [], + // 鐘舵��(0姝e父 1鍋滅敤)瀛楀吀 + statusOptions: [], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + configKey: undefined, + bucketName: undefined, + status: undefined, + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + configKey: [ + { required: true, message: "configKey涓嶈兘涓虹┖", trigger: "blur" }, + ], + accessKey: [ + { required: true, message: "accessKey涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 200, + message: "accessKey闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", + trigger: "blur", + }, + ], + secretKey: [ + { required: true, message: "secretKey涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 100, + message: "secretKey闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", + trigger: "blur", + }, + ], + bucketName: [ + { required: true, message: "bucketName涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 100, + message: "bucketName闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", + trigger: "blur", + }, + ], + endpoint: [ + { required: true, message: "endpoint涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 100, + message: "endpoint鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", + trigger: "blur", + }, + ], + }, + }; + }, + created() { + this.getList(); + this.getDicts("sys_yes_no").then(response => { + this.isHttpsOptions = response.data; + }); + this.getDicts("sys_normal_disable").then(response => { + this.statusOptions = response.data; + }); + this.configKeyOptions = this.configKeyDatas; + }, + methods: { + /** 鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛� */ + getList() { + this.loading = true; + listOssConfig(this.queryParams).then((response) => { + this.ossConfigList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + ossConfigId: undefined, + configKey: undefined, + accessKey: undefined, + secretKey: undefined, + bucketName: undefined, + prefix: undefined, + endpoint: undefined, + isHttps: "N", + region: undefined, + status: "1", + remark: undefined, + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞浜戝瓨鍌ㄩ厤缃�"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.loading = true; + this.reset(); + const ossConfigId = row.ossConfigId || this.ids; + getOssConfig(ossConfigId).then((response) => { + this.loading = false; + this.form = response.data; + this.open = true; + this.title = "淇敼浜戝瓨鍌ㄩ厤缃�"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + this.buttonLoading = true; + if (this.form.ossConfigId != null) { + updateOssConfig(this.form).then(response => { + this.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }).finally(() => { + this.buttonLoading = false; + }); + } else { + addOssConfig(this.form).then(response => { + this.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }).finally(() => { + this.buttonLoading = false; + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const ossConfigIds = row.ossConfigId || this.ids; + this.$confirm('鏄惁纭鍒犻櫎浜戝瓨鍌ㄩ厤缃紪鍙蜂负"' + ossConfigIds + '"鐨勬暟鎹」?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.loading = true; + return delOssConfig(ossConfigIds); + }).then(() => { + this.loading = false; + this.getList(); + this.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + // 浜戝瓨鍌ㄩ厤缃姸鎬佷慨鏀� + handleStatusChange(row) { + let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; + this.$confirm( + '纭瑕�"' + text + '""' + row.configKey + '"閰嶇疆鍚�?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(function () { + return changeOssConfigStatus(row.ossConfigId, row.status, row.configKey); + }).then(() => { + this.getList() + this.msgSuccess(text + "鎴愬姛"); + }).catch(function () { + row.status = row.status === "0" ? "1" : "0"; + }).finally(() => { + }); + }, + }, +}; +</script> diff --git a/ruoyi-ui/src/views/system/oss/index.vue b/ruoyi-ui/src/views/system/oss/index.vue index a183938..e8e471e 100644 --- a/ruoyi-ui/src/views/system/oss/index.vue +++ b/ruoyi-ui/src/views/system/oss/index.vue @@ -96,7 +96,16 @@ v-hasPermi="['system:oss:remove']" >鍒犻櫎</el-button> </el-col> - + <el-col :span="1.5"> + <el-button + type="info" + plain + icon="el-icon-s-operation" + size="mini" + @click="handleOssConfig" + v-hasPermi="['system:oss:list']" + >閰嶇疆绠$悊</el-button> + </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> @@ -282,6 +291,10 @@ this.single = selection.length!==1 this.multiple = !selection.length }, + /** 浠诲姟鏃ュ織鍒楄〃鏌ヨ */ + handleOssConfig() { + this.$router.push({ path: '/system/oss-config/index'}) + }, /** 鏂囦欢鎸夐挳鎿嶄綔 */ handleFile() { this.reset(); diff --git a/ruoyi-ui/src/views/system/ossConfig/index.vue b/ruoyi-ui/src/views/system/ossConfig/index.vue deleted file mode 100644 index 3d8525f..0000000 --- a/ruoyi-ui/src/views/system/ossConfig/index.vue +++ /dev/null @@ -1,495 +0,0 @@ -<template> - <div class="app-container"> - <el-form - :model="queryParams" - ref="queryForm" - :inline="true" - v-show="showSearch" - label-width="100px" - > - <el-form-item label="configKey" prop="configKey"> - <el-input - v-model="queryParams.configKey" - placeholder="璇疯緭鍏onfigKey" - clearable - size="small" - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item label="bucketName" prop="bucketName"> - <el-input - v-model="queryParams.bucketName" - placeholder="璇疯緭鍏ucketName" - clearable - size="small" - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >鎼滅储</el-button - > - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" - >閲嶇疆</el-button - > - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['system:sysOssConfig:add']" - >鏂板</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - type="success" - plain - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:sysOssConfig:edit']" - >淇敼</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - plain - icon="el-icon-download" - size="mini" - :loading="exportLoading" - @click="handleExport" - v-hasPermi="['system:sysOssConfig:export']" - >瀵煎嚭</el-button - > - </el-col> - <right-toolbar - :showSearch.sync="showSearch" - @queryTable="getList" - ></right-toolbar> - </el-row> - - <el-table v-loading="loading" :data="sysOssConfigList"> - <el-table-column - label="涓诲缓" - align="center" - prop="ossConfigId" - v-if="false" - /> - <el-table-column label="configKey" align="center" prop="configKey" /> - <el-table-column label="accessKey" align="center" prop="accessKey" /> - <el-table-column label="seretKey" align="center" prop="secretKey" /> - <el-table-column label="bucketName" align="center" prop="bucketName" /> - <el-table-column - label="endpoint" - width="200" - align="center" - prop="endpoint" - /> - <el-table-column label="鍓嶇紑" align="center" prop="prefix" /> - <el-table-column - label="鏄惁htpps" - align="center" - prop="isHttps" - :formatter="isHttpsFormat" - /> - <el-table-column label="region" align="center" prop="region" /> - <el-table-column label="鐘舵��" align="center" prop="status"> - <template slot-scope="scope"> - <el-switch - v-model="scope.row.status" - active-value="0" - inactive-value="1" - @change="handleStatusChange(scope.row)" - ></el-switch> - </template> - </el-table-column> - <el-table-column - label="鎿嶄綔" - align="center" - class-name="small-padding fixed-width" - > - <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:sysOssConfig:edit']" - >淇敼</el-button - > - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['system:sysOssConfig:remove']" - >鍒犻櫎</el-button - > - </template> - </el-table-column> - </el-table> - - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - - <!-- 娣诲姞鎴栦慨鏀逛簯瀛樺偍閰嶇疆瀵硅瘽妗� --> - <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="120px"> - <el-form-item label="configKey" prop="configKey"> - <el-row> - <el-col :span="12"> - <el-select v-model="form.configKey" placeholder="璇烽�夋嫨"> - <el-option - v-for="item in configKeyOptions" - :key="item.configKey" - :label="item.label" - :value="item.configKey" - > - <span style="float: left">{{ item.configKey }}</span> - <span style="float: right; color: #8492a6; font-size: 13px">{{ - item.label - }}</span> - </el-option> - </el-select> - </el-col> - <el-col :span="12"> - <el-form-item label="bucketName" prop="bucketName"> - <el-input - v-model="form.bucketName" - placeholder="璇疯緭鍏ucketName" - /> - </el-form-item> - </el-col> - </el-row> - </el-form-item> - <el-row> - <el-col :span="12"> - <el-form-item label="accessKey" prop="accessKey"> - <el-input - v-model="form.accessKey" - placeholder="璇疯緭鍏ccessKey" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="secretKey" prop="secretKey"> - <el-input - v-model="form.secretKey" - placeholder="璇疯緭鍏ecretKey" - /> - </el-form-item> - </el-col> - </el-row> - <el-form-item label="endpoint" prop="endpoint"> - <el-input v-model="form.endpoint" placeholder="璇疯緭鍏ndpoint" /> - </el-form-item> - <el-form-item label="鍓嶇紑" prop="prefix"> - <el-input v-model="form.prefix" placeholder="璇疯緭鍏ュ墠缂�" /> - </el-form-item> - <el-row> - <el-col :span="12"> - <el-form-item label="鐘舵��"> - <el-radio-group v-model="form.status"> - <el-radio label="0">鍚敤</el-radio> - <el-radio label="1">绂佺敤</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鏄惁htpps"> - <el-radio-group v-model="form.isHttps"> - <el-radio label="0">鍚�</el-radio> - <el-radio label="1">鏄�</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - </el-row> - <el-form-item label="region" prop="region"> - <el-input v-model="form.region" placeholder="璇疯緭鍏egion" /> - </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input - v-model="form.remark" - type="textarea" - placeholder="璇疯緭鍏ュ唴瀹�" - /> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button :loading="buttonLoading" type="primary" @click="submitForm" - >纭� 瀹�</el-button - > - <el-button @click="cancel">鍙� 娑�</el-button> - </div> - </el-dialog> - </div> -</template> - -<script> -import { - listSysOssConfig, - getSysOssConfig, - delSysOssConfig, - addSysOssConfig, - updateSysOssConfig, - changeOssConfigStatus, -} from "@/api/system/sysOssConfig"; -import { downLoadExcel } from "@/utils/download"; - -export default { - name: "SysOssConfig", - data() { - return { - // 鎸夐挳loading - buttonLoading: false, - // 閬僵灞� - loading: true, - // 瀵煎嚭閬僵灞� - exportLoading: false, - // 閫変腑鏁扮粍 - ids: [], - // 闈炲崟涓鐢� - single: true, - // 闈炲涓鐢� - multiple: true, - // 鏄剧ず鎼滅储鏉′欢 - showSearch: true, - // 鎬绘潯鏁� - total: 0, - // 浜戝瓨鍌ㄩ厤缃〃鏍兼暟鎹� - sysOssConfigList: [], - //configKeyOptions - configKeyOptions: [], - configKeyDatas: [ - { configKey: "monio", label: "minio" }, - { configKey: "qcloud", label: "鑵捐浜�" }, - { configKey: "aliyun", label: "闃块噷浜�" }, - { configKey: "qiniu", label: "涓冪墰浜�" }, - ], - // 寮瑰嚭灞傛爣棰� - title: "", - // 鏄惁鏄剧ず寮瑰嚭灞� - open: false, - // 鏌ヨ鍙傛暟 - queryParams: { - pageNum: 1, - pageSize: 10, - configKey: undefined, - bucketName: undefined, - }, - // 琛ㄥ崟鍙傛暟 - form: {}, - // 琛ㄥ崟鏍¢獙 - rules: { - configKey: [ - { required: true, message: "configKey涓嶈兘涓虹┖", trigger: "blur" }, - ], - accessKey: [ - { required: true, message: "accessKey涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 200, - message: "accessKey闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", - trigger: "blur", - }, - ], - secretKey: [ - { required: true, message: "secretKey涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 100, - message: "secretKey闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", - trigger: "blur", - }, - ], - bucketName: [ - { required: true, message: "bucketName涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 100, - message: "bucketName闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", - trigger: "blur", - }, - ], - endpoint: [ - { required: true, message: "endpoint涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 100, - message: "endpoint鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 100 涔嬮棿", - trigger: "blur", - }, - ], - }, - }; - }, - created() { - this.getList(); - this.configKeyOptions = this.configKeyDatas; - }, - methods: { - /** 鏌ヨ浜戝瓨鍌ㄩ厤缃垪琛� */ - getList() { - this.loading = true; - listSysOssConfig(this.queryParams).then((response) => { - this.sysOssConfigList = response.rows; - this.total = response.total; - this.loading = false; - }); - }, - // 鏄惁htpps瀛楀吀缈昏瘧 - isHttpsFormat(row, column) { - return row.isHttps == "0" ? "鍚�" : "鏄�"; - }, - // 鍙栨秷鎸夐挳 - cancel() { - this.open = false; - this.reset(); - }, - // 琛ㄥ崟閲嶇疆 - reset() { - this.form = { - ossConfigId: undefined, - configKey: undefined, - accessKey: undefined, - secretKey: undefined, - bucketName: undefined, - prefix: undefined, - endpoint: undefined, - isHttps: "0", - region: undefined, - status: "1", - remark: undefined, - }; - this.resetForm("form"); - }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ - resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); - }, - /** 鏂板鎸夐挳鎿嶄綔 */ - handleAdd() { - this.reset(); - this.open = true; - this.title = "娣诲姞浜戝瓨鍌ㄩ厤缃�"; - }, - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.loading = true; - this.reset(); - const ossConfigId = row.ossConfigId || this.ids; - getSysOssConfig(ossConfigId).then((response) => { - this.loading = false; - this.form = response.data; - this.open = true; - this.title = "淇敼浜戝瓨鍌ㄩ厤缃�"; - }); - }, - /** 鎻愪氦鎸夐挳 */ - submitForm() { - this.$refs["form"].validate((valid) => { - if (valid) { - this.buttonLoading = true; - if (this.form.ossConfigId != null) { - updateSysOssConfig(this.form) - .then((response) => { - this.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }) - .finally(() => { - this.buttonLoading = false; - }); - } else { - addSysOssConfig(this.form) - .then((response) => { - this.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }) - .finally(() => { - this.buttonLoading = false; - }); - } - } - }); - }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete(row) { - const ossConfigIds = row.ossConfigId || this.ids; - this.$confirm( - '鏄惁纭鍒犻櫎configKey涓�"' + row.configKey + '"鐨勬暟鎹」?', - "璀﹀憡", - { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - } - ) - .then(() => { - return delSysOssConfig(ossConfigIds); - }) - .then(() => { - this.loading = false; - this.getList(); - this.msgSuccess("鍒犻櫎鎴愬姛"); - }) - .catch(() => {}); - }, - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ - handleExport() { - downLoadExcel("/system/sysOssConfig/export", this.queryParams); - }, - // 浜戝瓨鍌ㄩ厤缃姸鎬佷慨鏀� - handleStatusChange(row) { - let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; - this.$confirm( - '纭瑕�"' + text + '""' + row.configKey + '"閰嶇疆鍚�?', - "璀﹀憡", - { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - } - ) - .then(function () { - return changeOssConfigStatus( - row.ossConfigId, - row.status, - row.configKey - ); - }) - .then(() => { - this.msgSuccess(text + "鎴愬姛"); - }) - .catch(function () { - row.status = row.status === "0" ? "1" : "0"; - }); - }, - }, -}; -</script> diff --git a/sql/oss.sql b/sql/oss.sql index 3b20c07..a86641e 100644 --- a/sql/oss.sql +++ b/sql/oss.sql @@ -16,6 +16,30 @@ primary key (oss_id) ) engine=innodb comment ='OSS浜戝瓨鍌ㄨ〃'; +-- ---------------------------- +-- OSS浜戝瓨鍌ㄥ姩鎬侀厤缃〃 +-- ---------------------------- +drop table if exists sys_oss_config; +create table sys_oss_config ( + oss_config_id bigint(20) not null auto_increment comment '涓诲缓', + config_key varchar(255) not null default '' comment '閰嶇疆key', + access_key varchar(255) default '' comment 'accessKey', + secret_key varchar(255) default '' comment '绉橀挜', + bucket_name varchar(255) default '' comment '妗跺悕绉�', + prefix varchar(255) default '' comment '鍓嶇紑', + endpoint varchar(255) default '' comment '璁块棶绔欑偣', + is_https char(1) default 'N' comment '鏄惁https锛圷=鏄�,N=鍚︼級', + region varchar(255) default '' comment '鍩�', + status char(1) default '1' comment '鐘舵�侊紙0=姝e父,1=鍋滅敤锛�', + ext1 varchar(255) default '' comment '鎵╁睍瀛楁', + create_by varchar(64) default '' comment '鍒涘缓鑰�', + create_time datetime default null comment '鍒涘缓鏃堕棿', + update_by varchar(64) default '' comment '鏇存柊鑰�', + update_time datetime default null comment '鏇存柊鏃堕棿', + remark varchar(500) default null comment '澶囨敞', + primary key (oss_config_id) +) engine=innodb comment='浜戝瓨鍌ㄩ厤缃〃'; + insert into sys_config values(10, 'OSS浜戝瓨鍌ㄦ湇鍔″晢', 'sys.oss.cloudStorageService', 'minio', 'Y', 'admin', sysdate(), '', null, 'OSS浜戝瓨鍌ㄦ湇鍔″晢(qiniu:涓冪墰浜�, aliyun:闃块噷浜�, qcloud:鑵捐浜�, minio: Minio)'); insert into sys_config values(11, 'OSS棰勮鍒楄〃璧勬簮寮�鍏�', 'sys.oss.previewListResource', 'true', 'Y', 'admin', sysdate(), '', null, 'true:寮�鍚�, false:鍏抽棴'); @@ -25,3 +49,10 @@ insert into sys_menu values('1601', '鏂囦欢涓婁紶', '118', '2', '#', '', 1, 0, 'F', '0', '0', 'system:oss:upload', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('1602', '鏂囦欢涓嬭浇', '118', '3', '#', '', 1, 0, 'F', '0', '0', 'system:oss:download', '#', 'admin', sysdate(), '', null, ''); insert into sys_menu values('1603', '鏂囦欢鍒犻櫎', '118', '4', '#', '', 1, 0, 'F', '0', '0', 'system:oss:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1604', '閰嶇疆娣诲姞', '118', '5', '#', '', 1, 0, 'F', '0', '0', 'system:oss:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1605', '閰嶇疆缂栬緫', '118', '6', '#', '', 1, 0, 'F', '0', '0', 'system:oss:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'http://localhost:9000', 'N', '', '0', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://XXX.XXXX.com', 'N', 'z0', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://oss-cn-beijing.aliyuncs.com', 'N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'http://cos.ap-beijing.myqcloud.com', 'N', 'ap-beijing', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); diff --git a/sql/sys_oss_config.sql b/sql/sys_oss_config.sql deleted file mode 100644 index 5d64420..0000000 --- a/sql/sys_oss_config.sql +++ /dev/null @@ -1,45 +0,0 @@ -/* -Navicat MySQL Data Transfer - -Source Server : mysql57 -Source Server Version : 50735 -Source Host : localhost:3306 -Source Database : ry-vue - -Target Server Type : MYSQL -Target Server Version : 50735 -File Encoding : 65001 - -Date: 2021-08-12 09:01:33 -*/ - -SET FOREIGN_KEY_CHECKS=0; - --- ---------------------------- --- Table structure for sys_oss_config --- ---------------------------- -DROP TABLE IF EXISTS `sys_oss_config`; -CREATE TABLE `sys_oss_config` ( - `oss_config_id` int(5) NOT NULL AUTO_INCREMENT COMMENT '涓诲缓', - `config_key` varchar(255) NOT NULL DEFAULT '' COMMENT '閰嶇疆key', - `access_key` varchar(255) DEFAULT '' COMMENT 'access_key', - `secret_key` varchar(255) DEFAULT '' COMMENT '绉橀挜', - `bucket_name` varchar(255) DEFAULT '' COMMENT '妗跺悕绉�', - `prefix` varchar(255) DEFAULT '' COMMENT '鍓嶇紑', - `endpoint` varchar(255) DEFAULT '' COMMENT '璁块棶绔欑偣', - `is_https` char(1) DEFAULT '0' COMMENT '鏄惁htpps锛�0鍚� 1鏄級', - `region` varchar(255) DEFAULT '' COMMENT '鍩�', - `status` char(1) DEFAULT '0' COMMENT '鐘舵��(0姝e父 1鍋滅敤)', - `ext1` varchar(255) DEFAULT '' COMMENT '鎵╁睍瀛楁', - `create_by` varchar(64) DEFAULT '' COMMENT '鍒涘缓鑰�', - `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', - `update_by` varchar(64) DEFAULT '' COMMENT '鏇存柊鑰�', - `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿', - `remark` varchar(500) DEFAULT NULL COMMENT '澶囨敞', - PRIMARY KEY (`oss_config_id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='浜戝瓨鍌ㄩ厤缃〃'; - --- ---------------------------- --- Records of sys_oss_config --- ---------------------------- -INSERT INTO `sys_oss_config` VALUES ('1', 'minio3', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'http://localhost:9000', '0', '', '0', '', 'admin', '2021-08-11 21:29:37', 'admin', '2021-08-11 22:52:41', null); -- Gitblit v1.9.3