新闻发布修改增加语言选择逻辑
This commit is contained in:
parent
6dc8b07de8
commit
0e3961af90
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出新闻信息
|
||||
列表
|
||||
|
|
|
@ -94,5 +94,8 @@ public class GwSlideshow extends BaseEntity {
|
|||
*/
|
||||
private String orderBy;
|
||||
|
||||
|
||||
/**
|
||||
* 发布语言
|
||||
*/
|
||||
private Integer publishLang;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -124,4 +124,9 @@ public class GwSlideshowVo {
|
|||
*/
|
||||
private String orderBy;
|
||||
|
||||
/**
|
||||
* 发布语言
|
||||
*/
|
||||
private Integer publishLang;
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
},
|
||||
|
|
|
@ -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()
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user