diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java index a1a1af1..a22ffe7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java @@ -123,9 +123,9 @@ public class SysOssController extends BaseController { String pathFan = filePath.replace("\\", "/"); //filePath获取到的地址斜杠是“ \ ”的(单斜杠是特殊符号,得用双斜杠代替),得换成“ / ”才能访问到 //返回全路径图片地址 - String returnPath = ("http://47.121.27.78:8008/upload/" + fileName).replace("\\", "/"); + //String returnPath = ("http://47.121.27.78:8008/upload/" + fileName).replace("\\", "/"); //域名环境使用↓ - //String returnPath = ("https://www.haokunny.com/upload/" + fileName).replace("\\", "/"); + String returnPath = ("https://www.haokunny.com/upload/" + fileName).replace("\\", "/"); //修改数据库 Long image = iSysImageService.uploadImage(fileName, returnPath); System.err.println("替换后:" + pathFan); diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index d8b3db2..046906d 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -51,7 +51,7 @@ spring: # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) url: jdbc:mysql://localhost:3306/officialwebsite?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true - username: root + username: website password: root # 从库数据源 # slave: diff --git a/ruoyi-system/src/main/java/com/ruoyi/official/controller/GwSlideshowController.java b/ruoyi-system/src/main/java/com/ruoyi/official/controller/GwSlideshowController.java index 3d26cf0..4fe77b3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/official/controller/GwSlideshowController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/official/controller/GwSlideshowController.java @@ -1,29 +1,31 @@ package com.ruoyi.official.controller; -import java.util.List; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import lombok.RequiredArgsConstructor; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; +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.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.official.domain.vo.GwSlideshowVo; import com.ruoyi.official.domain.bo.GwSlideshowBo; +import com.ruoyi.official.domain.vo.GwSlideshowVo; import com.ruoyi.official.service.IGwSlideshowService; -import com.ruoyi.common.core.page.TableDataInfo; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 新闻信息 @@ -49,6 +51,21 @@ public class GwSlideshowController extends BaseController { return iGwSlideshowService.queryPageList(bo, pageQuery); } + @SaCheckPermission("official:slideshow:list") + @GetMapping("/lang-list") + public Map> langList(GwSlideshowBo bo, PageQuery pageQuery) { + Map> result = new HashMap<>(); + GwSlideshowBo bo1 = new GwSlideshowBo(); + BeanUtils.copyProperties(bo, bo1); + bo1.setPublishLang(-1); + result.put("zh", iGwSlideshowService.queryPageList(bo1, pageQuery)); + GwSlideshowBo bo2 = new GwSlideshowBo(); + BeanUtils.copyProperties(bo, bo2); + bo2.setPublishLang(-2); + result.put("en", iGwSlideshowService.queryPageList(bo2, pageQuery)); + return result; + } + /** * 导出新闻信息 列表 diff --git a/ruoyi-system/src/main/java/com/ruoyi/official/domain/GwSlideshow.java b/ruoyi-system/src/main/java/com/ruoyi/official/domain/GwSlideshow.java index 8665d77..e655054 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/official/domain/GwSlideshow.java +++ b/ruoyi-system/src/main/java/com/ruoyi/official/domain/GwSlideshow.java @@ -94,5 +94,8 @@ public class GwSlideshow extends BaseEntity { */ private String orderBy; - + /** + * 发布语言 + */ + private Integer publishLang; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/official/domain/bo/GwSlideshowBo.java b/ruoyi-system/src/main/java/com/ruoyi/official/domain/bo/GwSlideshowBo.java index a0df34c..d67055c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/official/domain/bo/GwSlideshowBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/official/domain/bo/GwSlideshowBo.java @@ -1,17 +1,15 @@ package com.ruoyi.official.domain.bo; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.validation.constraints.*; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.Date; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.core.domain.BaseEntity; - /** * 新闻信息 业务对象 gw_slideshow @@ -39,13 +37,13 @@ public class GwSlideshowBo extends BaseEntity { /** * 标题名称 */ - @NotBlank(message = "标题名称不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "标题名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String captionName; /** * 标题名称english */ - @NotBlank(message = "标题名称不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "标题名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String captionNameEnglish; /** @@ -57,25 +55,25 @@ public class GwSlideshowBo extends BaseEntity { /** * 集团名称 */ - @NotBlank(message = "集团名称不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "集团名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String groupName; /** * 集团名称english */ - @NotBlank(message = "集团名称不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "集团名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String groupNameEnglish; /** * 新闻内容 */ - @NotBlank(message = "新闻内容不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "新闻内容不能为空", groups = { AddGroup.class, EditGroup.class }) private String newsContent; /** * 新闻内容english */ - @NotBlank(message = "新闻内容不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "新闻内容不能为空", groups = { AddGroup.class, EditGroup.class }) private String newsContentEnglish; /** @@ -102,6 +100,13 @@ public class GwSlideshowBo extends BaseEntity { /** * 排序吗 */ + @NotBlank(message = "排序不能为空", groups = {AddGroup.class, EditGroup.class}) private String orderBy; + /** + * 发布语言 + */ + @NotNull(message = "发布语言不能为空", groups = {AddGroup.class, EditGroup.class}) + private Integer publishLang; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/official/domain/vo/GwSlideshowVo.java b/ruoyi-system/src/main/java/com/ruoyi/official/domain/vo/GwSlideshowVo.java index 0c042e4..b1aefdf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/official/domain/vo/GwSlideshowVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/official/domain/vo/GwSlideshowVo.java @@ -124,4 +124,9 @@ public class GwSlideshowVo { */ private String orderBy; + /** + * 发布语言 + */ + private Integer publishLang; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/official/service/impl/GwSlideshowServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/official/service/impl/GwSlideshowServiceImpl.java index 2baac51..760842a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/official/service/impl/GwSlideshowServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/official/service/impl/GwSlideshowServiceImpl.java @@ -3,25 +3,23 @@ package com.ruoyi.official.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.update.UpdateWrapper; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.domain.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.official.domain.GwSlideshow; import com.ruoyi.official.domain.bo.GwSlideshowBo; import com.ruoyi.official.domain.vo.GwSlideshowVo; -import com.ruoyi.official.domain.GwSlideshow; import com.ruoyi.official.mapper.GwSlideshowMapper; import com.ruoyi.official.service.IGwSlideshowService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; /** * 新闻信息 @@ -94,6 +92,13 @@ public class GwSlideshowServiceImpl implements IGwSlideshowService { lqw.eq(StringUtils.isNotBlank(bo.getType()), GwSlideshow::getType, bo.getType()); lqw.eq(StringUtils.isNotBlank(bo.getAbstracts()), GwSlideshow::getAbstracts, bo.getAbstracts()); lqw.eq(StringUtils.isNotBlank(bo.getIsTop()), GwSlideshow::getIsTop, bo.getIsTop()); + if (bo.getPublishLang() != null) { + if (bo.getPublishLang() >= 0) { + lqw.eq(GwSlideshow::getPublishLang, bo.getPublishLang()); + } else { + lqw.in(GwSlideshow::getPublishLang, 0, -1 * bo.getPublishLang()); + } + } lqw.orderByDesc(GwSlideshow::getIsTop); lqw.orderByDesc(GwSlideshow::getReleaseTime); return lqw; diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 3f7b85d..37d08c2 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -7,7 +7,7 @@ "scripts": { "dev": "vue-cli-service serve", "dev:prod": "vue-cli-service serve --mode=production", - "build:prod": "vue-cli-service build", + "build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", "preview": "node build/index.js --preview", "lint": "eslint --ext .js,.vue src" }, diff --git a/ruoyi-ui/src/views/official/slideshow/index.vue b/ruoyi-ui/src/views/official/slideshow/index.vue index cdfcf79..0f02b34 100644 --- a/ruoyi-ui/src/views/official/slideshow/index.vue +++ b/ruoyi-ui/src/views/official/slideshow/index.vue @@ -159,6 +159,13 @@ + + + 全部 + 仅中文 + 仅英文 + + @@ -279,28 +286,19 @@ export default { { required: true, message: "主键id不能为空", trigger: "blur" } ], cover: [ - { required: true, message: "封面不能为空", trigger: "blur" } - ], - captionName: [ - { required: true, message: "标题名称不能为空", trigger: "blur" } + { required: true, message: "封面不能为空", trigger: "change" } ], releaseTime: [ - { required: true, message: "发布时间不能为空", trigger: "blur" } - ], - groupName: [ - { required: true, message: "集团名称不能为空", trigger: "blur" } - ], - newsContent: [ - { required: true, message: "新闻内容不能为空", trigger: "blur" } - ], - abstracts: [ - { required: true, message: "摘要不能为空", trigger: "blur" } + { required: true, message: "发布时间不能为空", trigger: "change" } ], isTop: [ - { required: true, message: "是否置顶不能为空", trigger: "blur" } + { required: true, message: "是否置顶不能为空", trigger: "change" } + ], + orderBy: [ + { required: true, message: "排序不能为空", trigger: "change" } ], type: [ - { required: true, message: "类型不能为空", trigger: "blur" } + { required: true, message: "类型不能为空", trigger: "change" } ], } }; @@ -328,6 +326,7 @@ export default { reset() { this.form = { id: undefined, + publishLang: 0, cover: '', captionName: undefined, captionNameEnglish: undefined, @@ -340,6 +339,7 @@ export default { abstractsEnglish: undefined, isTop: '0', type: '1', + orderBy: '0', createBy: undefined, createUserId: undefined, createTime: undefined, @@ -348,6 +348,7 @@ export default { updateTime: undefined }; this.resetForm("form"); + this.updateRules(this.form.publishLang); }, /** 搜索按钮操作 */ handleQuery() { @@ -381,6 +382,7 @@ export default { this.form = response.data; this.open = true; this.title = "修改新闻信息"; + this.updateRules(this.form.publishLang); }); }, /** 提交按钮 */ @@ -428,6 +430,35 @@ export default { this.download('official/slideshow/export', { ...this.queryParams }, `slideshow_${new Date().getTime()}.xlsx`) + }, + setRule(field, required, msg, trigger = 'blur') { + this.$set(this.rules, field, [{ required, message: msg, trigger }]) + }, + updateRules(value) { + const v = Number(value) + const zhRequired = (v === 0 || v === 1) + const enRequired = (v === 0 || v === 2) + this.setRule('captionName', zhRequired, '标题名称不能为空', 'blur') + this.setRule('captionNameEnglish', enRequired, '标题英文名称不能为空', 'blur') + this.setRule('groupName', zhRequired, '集团名称不能为空', 'blur') + this.setRule('groupNameEnglish', enRequired, '集团英文名称不能为空', 'blur') + this.setRule('newsContent', zhRequired, '新闻内容不能为空', 'change') + this.setRule('newsContentEnglish', enRequired, '新闻英文内容不能为空', 'change') + this.setRule('abstracts', zhRequired, '摘要不能为空', 'blur') + this.setRule('abstractsEnglish', enRequired, '摘要英文不能为空', 'blur') + this.$nextTick(() => { + this.$refs.form.clearValidate([ + 'captionName','captionNameEnglish', + 'groupName','groupNameEnglish', + 'newsContent','newsContentEnglish', + 'abstracts','abstractsEnglish' + ]) + }) + this.$nextTick(() => { + const el = this.$refs.publishLangRG && this.$refs.publishLangRG.$el + if (el && !el.hasAttribute('tabindex')) el.setAttribute('tabindex', '0') + el && el.focus && el.focus() + }) } } };