新闻发布修改增加语言选择逻辑

This commit is contained in:
liulei24615278 2025-07-31 09:13:28 +08:00
parent 6dc8b07de8
commit 0e3961af90
9 changed files with 121 additions and 55 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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<String, TableDataInfo<GwSlideshowVo>> langList(GwSlideshowBo bo, PageQuery pageQuery) {
Map<String, TableDataInfo<GwSlideshowVo>> 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;
}
/**
* 导出新闻信息
列表

View File

@ -94,5 +94,8 @@ public class GwSlideshow extends BaseEntity {
*/
private String orderBy;
/**
* 发布语言
*/
private Integer publishLang;
}

View File

@ -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;
}

View File

@ -124,4 +124,9 @@ public class GwSlideshowVo {
*/
private String orderBy;
/**
* 发布语言
*/
private Integer publishLang;
}

View File

@ -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;

View File

@ -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"
},

View File

@ -159,6 +159,13 @@
<!-- 添加或修改新闻信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1520px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="发布语言" prop="publishLang">
<el-radio-group v-model="form.publishLang" @change="updateRules">
<el-radio :label="0">全部</el-radio>
<el-radio :label="1">仅中文</el-radio>
<el-radio :label="2">仅英文</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="标题名称" prop="captionName">
<el-input v-model="form.captionName" placeholder="请输入标题名称" />
</el-form-item>
@ -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()
})
}
}
};