Commit 6a36fe65b2732e9f8787ccefbb9069d60fb76139

Authored by YunaiV
1 parent 42a984c8

1. 基本完成通知模块的迁移

Showing 28 changed files with 384 additions and 233 deletions
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java deleted
1   -package com.ruoyi.system.service.impl;
2   -
3   -import java.util.List;
4   -
5   -import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.stereotype.Service;
7   -import com.ruoyi.system.domain.SysNotice;
8   -import com.ruoyi.system.mapper.SysNoticeMapper;
9   -import com.ruoyi.system.service.ISysNoticeService;
10   -
11   -/**
12   - * 公告 服务层实现
13   - *
14   - * @author ruoyi
15   - */
16   -@Service
17   -public class SysNoticeServiceImpl implements ISysNoticeService {
18   - @Autowired
19   - private SysNoticeMapper noticeMapper;
20   -
21   - /**
22   - * 查询公告信息
23   - *
24   - * @param noticeId 公告ID
25   - * @return 公告信息
26   - */
27   - @Override
28   - public SysNotice selectNoticeById(Long noticeId) {
29   - return noticeMapper.selectNoticeById(noticeId);
30   - }
31   -
32   - /**
33   - * 查询公告列表
34   - *
35   - * @param notice 公告信息
36   - * @return 公告集合
37   - */
38   - @Override
39   - public List<SysNotice> selectNoticeList(SysNotice notice) {
40   - return noticeMapper.selectNoticeList(notice);
41   - }
42   -
43   - /**
44   - * 新增公告
45   - *
46   - * @param notice 公告信息
47   - * @return 结果
48   - */
49   - @Override
50   - public int insertNotice(SysNotice notice) {
51   - return noticeMapper.insertNotice(notice);
52   - }
53   -
54   - /**
55   - * 修改公告
56   - *
57   - * @param notice 公告信息
58   - * @return 结果
59   - */
60   - @Override
61   - public int updateNotice(SysNotice notice) {
62   - return noticeMapper.updateNotice(notice);
63   - }
64   -
65   - /**
66   - * 删除公告对象
67   - *
68   - * @param noticeId 公告ID
69   - * @return 结果
70   - */
71   - @Override
72   - public int deleteNoticeById(Long noticeId) {
73   - return noticeMapper.deleteNoticeById(noticeId);
74   - }
75   -
76   - /**
77   - * 批量删除公告信息
78   - *
79   - * @param noticeIds 需要删除的公告ID
80   - * @return 结果
81   - */
82   - @Override
83   - public int deleteNoticeByIds(Long[] noticeIds) {
84   - return noticeMapper.deleteNoticeByIds(noticeIds);
85   - }
86   -}
ruoyi-ui/src/api/system/notice.js
... ... @@ -3,7 +3,7 @@ import request from &#39;@/utils/request&#39;
3 3 // 查询公告列表
4 4 export function listNotice(query) {
5 5 return request({
6   - url: '/system/notice/list',
  6 + url: '/system/notice/page',
7 7 method: 'get',
8 8 params: query
9 9 })
... ... @@ -12,7 +12,7 @@ export function listNotice(query) {
12 12 // 查询公告详细
13 13 export function getNotice(noticeId) {
14 14 return request({
15   - url: '/system/notice/' + noticeId,
  15 + url: '/system/notice/get?id=' + noticeId,
16 16 method: 'get'
17 17 })
18 18 }
... ... @@ -20,7 +20,7 @@ export function getNotice(noticeId) {
20 20 // 新增公告
21 21 export function addNotice(data) {
22 22 return request({
23   - url: '/system/notice',
  23 + url: '/system/notice/create',
24 24 method: 'post',
25 25 data: data
26 26 })
... ... @@ -29,7 +29,7 @@ export function addNotice(data) {
29 29 // 修改公告
30 30 export function updateNotice(data) {
31 31 return request({
32   - url: '/system/notice',
  32 + url: '/system/notice/update',
33 33 method: 'put',
34 34 data: data
35 35 })
... ... @@ -38,7 +38,7 @@ export function updateNotice(data) {
38 38 // 删除公告
39 39 export function delNotice(noticeId) {
40 40 return request({
41   - url: '/system/notice/' + noticeId,
  41 + url: '/system/notice/delete?id=' + noticeId,
42 42 method: 'delete'
43 43 })
44   -}
45 44 \ No newline at end of file
  45 +}
... ...
ruoyi-ui/src/utils/dict.js
... ... @@ -11,6 +11,7 @@ export const DICT_TYPE = {
11 11 SYS_ROLE_TYPE: 'sys_role_type',
12 12 SYS_DATA_SCOPE: 'sys_data_scope',
13 13 SYS_USER_SEX: 'sys_user_sex',
  14 + SYS_NOTICE_TYPE: 'sys_notice_type',
14 15 }
15 16  
16 17 /**
... ...
ruoyi-ui/src/views/system/notice/index.vue
1 1 <template>
2 2 <div class="app-container">
3 3 <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
4   - <el-form-item label="公告标题" prop="noticeTitle">
  4 + <el-form-item label="公告标题" prop="title">
5 5 <el-input
6   - v-model="queryParams.noticeTitle"
  6 + v-model="queryParams.title"
7 7 placeholder="请输入公告标题"
8 8 clearable
9 9 size="small"
... ... @@ -19,13 +19,13 @@
19 19 @keyup.enter.native="handleQuery"
20 20 />
21 21 </el-form-item>
22   - <el-form-item label="类型" prop="noticeType">
23   - <el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable size="small">
  22 + <el-form-item label="类型" prop="type">
  23 + <el-select v-model="queryParams.type" placeholder="公告类型" clearable size="small">
24 24 <el-option
25   - v-for="dict in typeOptions"
26   - :key="dict.dictValue"
27   - :label="dict.dictLabel"
28   - :value="dict.dictValue"
  25 + v-for="dict in noticeTypeDictDatas"
  26 + :key="parseInt(dict.value)"
  27 + :label="dict.label"
  28 + :value="parseInt(dict.value)"
29 29 />
30 30 </el-select>
31 31 </el-form-item>
... ... @@ -45,42 +45,21 @@
45 45 v-hasPermi="['system:notice:add']"
46 46 >新增</el-button>
47 47 </el-col>
48   - <el-col :span="1.5">
49   - <el-button
50   - type="success"
51   - icon="el-icon-edit"
52   - size="mini"
53   - :disabled="single"
54   - @click="handleUpdate"
55   - v-hasPermi="['system:notice:edit']"
56   - >修改</el-button>
57   - </el-col>
58   - <el-col :span="1.5">
59   - <el-button
60   - type="danger"
61   - icon="el-icon-delete"
62   - size="mini"
63   - :disabled="multiple"
64   - @click="handleDelete"
65   - v-hasPermi="['system:notice:remove']"
66   - >删除</el-button>
67   - </el-col>
68 48 <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
69 49 </el-row>
70 50  
71   - <el-table v-loading="loading" :data="noticeList" @selection-change="handleSelectionChange">
72   - <el-table-column type="selection" width="55" align="center" />
  51 + <el-table v-loading="loading" :data="noticeList">
73 52 <el-table-column label="序号" align="center" prop="noticeId" width="100" />
74 53 <el-table-column
75 54 label="公告标题"
76 55 align="center"
77   - prop="noticeTitle"
  56 + prop="title"
78 57 :show-overflow-tooltip="true"
79 58 />
80 59 <el-table-column
81 60 label="公告类型"
82 61 align="center"
83   - prop="noticeType"
  62 + prop="type"
84 63 :formatter="typeFormat"
85 64 width="100"
86 65 />
... ... @@ -120,7 +99,7 @@
120 99 <pagination
121 100 v-show="total>0"
122 101 :total="total"
123   - :page.sync="queryParams.pageNum"
  102 + :page.sync="queryParams.pageNo"
124 103 :limit.sync="queryParams.pageSize"
125 104 @pagination="getList"
126 105 />
... ... @@ -130,13 +109,13 @@
130 109 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
131 110 <el-row>
132 111 <el-col :span="12">
133   - <el-form-item label="公告标题" prop="noticeTitle">
134   - <el-input v-model="form.noticeTitle" placeholder="请输入公告标题" />
  112 + <el-form-item label="公告标题" prop="title">
  113 + <el-input v-model="form.title" placeholder="请输入公告标题" />
135 114 </el-form-item>
136 115 </el-col>
137 116 <el-col :span="12">
138   - <el-form-item label="公告类型" prop="noticeType">
139   - <el-select v-model="form.noticeType" placeholder="请选择">
  117 + <el-form-item label="公告类型" prop="type">
  118 + <el-select v-model="form.type" placeholder="请选择">
140 119 <el-option
141 120 v-for="dict in typeOptions"
142 121 :key="dict.dictValue"
... ... @@ -150,16 +129,16 @@
150 129 <el-form-item label="状态">
151 130 <el-radio-group v-model="form.status">
152 131 <el-radio
153   - v-for="dict in statusOptions"
154   - :key="dict.dictValue"
155   - :label="dict.dictValue"
156   - >{{dict.dictLabel}}</el-radio>
157   - </el-radio-group>
  132 + v-for="dict in statusDictDatas"
  133 + :key="parseInt(dict.value)"
  134 + :label="dict.label"
  135 + :value="parseInt(dict.value)"
  136 + >{{dict.label}}</el-radio>
158 137 </el-form-item>
159 138 </el-col>
160 139 <el-col :span="24">
161 140 <el-form-item label="内容">
162   - <editor v-model="form.noticeContent" :min-height="192"/>
  141 + <editor v-model="form.content" :min-height="192"/>
163 142 </el-form-item>
164 143 </el-col>
165 144 </el-row>
... ... @@ -173,9 +152,12 @@
173 152 </template>
174 153  
175 154 <script>
176   -import { listNotice, getNotice, delNotice, addNotice, updateNotice, exportNotice } from "@/api/system/notice";
  155 +import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/system/notice";
177 156 import Editor from '@/components/Editor';
178 157  
  158 +import {SysCommonStatusEnum} from '@/utils/constants'
  159 +import { getDictDataLabel, getDictDatas, DICT_TYPE } from '@/utils/dict'
  160 +
179 161 export default {
180 162 name: "Notice",
181 163 components: {
... ... @@ -185,12 +167,6 @@ export default {
185 167 return {
186 168 // 遮罩层
187 169 loading: true,
188   - // 选中数组
189   - ids: [],
190   - // 非单个禁用
191   - single: true,
192   - // 非多个禁用
193   - multiple: true,
194 170 // 显示搜索条件
195 171 showSearch: true,
196 172 // 总条数
... ... @@ -207,9 +183,9 @@ export default {
207 183 typeOptions: [],
208 184 // 查询参数
209 185 queryParams: {
210   - pageNum: 1,
  186 + pageNo: 1,
211 187 pageSize: 10,
212   - noticeTitle: undefined,
  188 + title: undefined,
213 189 createBy: undefined,
214 190 status: undefined
215 191 },
... ... @@ -217,41 +193,41 @@ export default {
217 193 form: {},
218 194 // 表单校验
219 195 rules: {
220   - noticeTitle: [
  196 + title: [
221 197 { required: true, message: "公告标题不能为空", trigger: "blur" }
222 198 ],
223   - noticeType: [
  199 + type: [
224 200 { required: true, message: "公告类型不能为空", trigger: "change" }
225 201 ]
226   - }
  202 + },
  203 +
  204 + // 枚举
  205 + CommonStatusEnum: SysCommonStatusEnum,
  206 + // 数据字典
  207 + noticeTypeDictDatas: getDictDatas(DICT_TYPE.SYS_NOTICE_TYPE),
  208 + statusDictDatas: getDictDatas(DICT_TYPE.SYS_COMMON_STATUS)
227 209 };
228 210 },
229 211 created() {
230 212 this.getList();
231   - this.getDicts("sys_notice_status").then(response => {
232   - this.statusOptions = response.data;
233   - });
234   - this.getDicts("sys_notice_type").then(response => {
235   - this.typeOptions = response.data;
236   - });
237 213 },
238 214 methods: {
239 215 /** 查询公告列表 */
240 216 getList() {
241 217 this.loading = true;
242 218 listNotice(this.queryParams).then(response => {
243   - this.noticeList = response.rows;
244   - this.total = response.total;
  219 + this.noticeList = response.data.list;
  220 + this.total = response.data.total;
245 221 this.loading = false;
246 222 });
247 223 },
248 224 // 公告状态字典翻译
249 225 statusFormat(row, column) {
250   - return this.selectDictLabel(this.statusOptions, row.status);
  226 + return getDictDataLabel(DICT_TYPE.SYS_COMMON_STATUS, row.status)
251 227 },
252 228 // 公告状态字典翻译
253 229 typeFormat(row, column) {
254   - return this.selectDictLabel(this.typeOptions, row.noticeType);
  230 + return getDictDataLabel(DICT_TYPE.SYS_NOTICE_TYPE, row.status)
255 231 },
256 232 // 取消按钮
257 233 cancel() {
... ... @@ -262,16 +238,16 @@ export default {
262 238 reset() {
263 239 this.form = {
264 240 noticeId: undefined,
265   - noticeTitle: undefined,
266   - noticeType: undefined,
267   - noticeContent: undefined,
268   - status: "0"
  241 + title: undefined,
  242 + type: undefined,
  243 + content: undefined,
  244 + status: SysCommonStatusEnum.ENABLE
269 245 };
270 246 this.resetForm("form");
271 247 },
272 248 /** 搜索按钮操作 */
273 249 handleQuery() {
274   - this.queryParams.pageNum = 1;
  250 + this.queryParams.pageNo = 1;
275 251 this.getList();
276 252 },
277 253 /** 重置按钮操作 */
... ... @@ -279,12 +255,6 @@ export default {
279 255 this.resetForm("queryForm");
280 256 this.handleQuery();
281 257 },
282   - // 多选框选中数据
283   - handleSelectionChange(selection) {
284   - this.ids = selection.map(item => item.noticeId)
285   - this.single = selection.length!=1
286   - this.multiple = !selection.length
287   - },
288 258 /** 新增按钮操作 */
289 259 handleAdd() {
290 260 this.reset();
... ... @@ -305,7 +275,7 @@ export default {
305 275 submitForm: function() {
306 276 this.$refs["form"].validate(valid => {
307 277 if (valid) {
308   - if (this.form.noticeId != undefined) {
  278 + if (this.form.noticeId !== undefined) {
309 279 updateNotice(this.form).then(response => {
310 280 this.msgSuccess("修改成功");
311 281 this.open = false;
... ... @@ -337,4 +307,4 @@ export default {
337 307 }
338 308 }
339 309 };
340   -</script>
341 310 \ No newline at end of file
  311 +</script>
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptRespVO.java
... ... @@ -13,7 +13,7 @@ import java.util.Date;
13 13 public class SysDeptRespVO extends SysDeptBaseVO {
14 14  
15 15 @ApiModelProperty(value = "部门编号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
19 19 private Integer status;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java
... ... @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
13 13 public class SysDeptSimpleRespVO {
14 14  
15 15 @ApiModelProperty(value = "部门编号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "部门名称", required = true, example = "芋道")
19 19 private String name;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostRespVO.java
... ... @@ -13,7 +13,7 @@ import java.util.Date;
13 13 public class SysPostRespVO extends SysPostBaseVO {
14 14  
15 15 @ApiModelProperty(value = "岗位序号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
19 19 private Date createTime;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java
... ... @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
13 13 public class SysPostSimpleRespVO {
14 14  
15 15 @ApiModelProperty(value = "岗位编号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "岗位名称", required = true, example = "芋道")
19 19 private String name;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataRespVO.java
... ... @@ -17,7 +17,7 @@ import java.util.Date;
17 17 public class SysDictDataRespVO extends SysDictDataBaseVO {
18 18  
19 19 @ApiModelProperty(value = "字典数据编号", required = true, example = "1024")
20   - private Integer id;
  20 + private Long id;
21 21  
22 22 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
23 23 private Date createTime;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java
... ... @@ -17,7 +17,7 @@ import java.util.Date;
17 17 public class SysDictTypeRespVO extends SysDictTypeBaseVO {
18 18  
19 19 @ApiModelProperty(value = "字典类型编号", required = true, example = "1024")
20   - private Integer id;
  20 + private Long id;
21 21  
22 22 @ApiModelProperty(value = "字典类型", required = true, example = "sys_common_sex")
23 23 private String type;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/SysNoticeController.java
1 1 package cn.iocoder.dashboard.modules.system.controller.notice;
2 2  
  3 +import cn.iocoder.dashboard.common.pojo.CommonResult;
  4 +import cn.iocoder.dashboard.common.pojo.PageResult;
  5 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeRespVO;
  8 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
  9 +import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert;
  10 +import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService;
3 11 import io.swagger.annotations.Api;
4   -import org.springframework.web.bind.annotation.RequestMapping;
5   -import org.springframework.web.bind.annotation.RestController;
  12 +import io.swagger.annotations.ApiImplicitParam;
  13 +import io.swagger.annotations.ApiOperation;
  14 +import org.springframework.validation.annotation.Validated;
  15 +import org.springframework.web.bind.annotation.*;
  16 +
  17 +import javax.annotation.Resource;
  18 +
  19 +import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
6 20  
7 21 @Api(tags = "通知公告 API")
8 22 @RestController
9 23 @RequestMapping("/system/notice")
10 24 public class SysNoticeController {
11 25  
12   -// /**
13   -// * 获取通知公告列表
14   -// */
  26 + @Resource
  27 + private SysNoticeService noticeService;
  28 +
  29 + @ApiOperation("获取通知公告列表")
  30 + @GetMapping("/page")
15 31 // @PreAuthorize("@ss.hasPermi('system:notice:list')")
16   -// @GetMapping("/list")
17   -// public TableDataInfo list(SysNotice notice) {
18   -// startPage();
19   -// List<SysNotice> list = noticeService.selectNoticeList(notice);
20   -// return getDataTable(list);
21   -// }
22   -//
23   -// /**
24   -// * 根据通知公告编号获取详细信息
25   -// */
  32 + public CommonResult<PageResult<SysNoticeRespVO>> pageNotices(@Validated SysNoticePageReqVO reqVO) {
  33 + return success(SysNoticeConvert.INSTANCE.convertPage(noticeService.pageNotices(reqVO)));
  34 + }
  35 +
  36 + @ApiOperation("获得通知公告")
  37 + @ApiImplicitParam(name = "id", value = "编号", readOnly = true, example = "1024", dataTypeClass = Long.class)
26 38 // @PreAuthorize("@ss.hasPermi('system:notice:query')")
27   -// @GetMapping(value = "/{noticeId}")
28   -// public AjaxResult getInfo(@PathVariable Long noticeId) {
29   -// return AjaxResult.success(noticeService.selectNoticeById(noticeId));
30   -// }
31   -//
32   -// /**
33   -// * 新增通知公告
34   -// */
  39 + @GetMapping(value = "/get")
  40 + public CommonResult<SysNoticeRespVO> getNotice(@RequestParam("id") Long id) {
  41 + return success(SysNoticeConvert.INSTANCE.convert(noticeService.getNotice(id)));
  42 + }
  43 +
  44 + @ApiOperation("新增通知公告")
35 45 // @PreAuthorize("@ss.hasPermi('system:notice:add')")
36 46 // @Log(title = "通知公告", businessType = BusinessType.INSERT)
37   -// @PostMapping
38   -// public AjaxResult add(@Validated @RequestBody SysNotice notice) {
39   -// notice.setCreateBy(SecurityUtils.getUsername());
40   -// return toAjax(noticeService.insertNotice(notice));
41   -// }
42   -//
43   -// /**
44   -// * 修改通知公告
45   -// */
  47 + @PostMapping("/create")
  48 + public CommonResult<Long> createNotice(@Validated @RequestBody SysNoticeCreateReqVO reqVO) {
  49 + Long noticeId = noticeService.createNotice(reqVO);
  50 + return success(noticeId);
  51 + }
  52 +
  53 + @ApiOperation("修改通知公告")
46 54 // @PreAuthorize("@ss.hasPermi('system:notice:edit')")
47 55 // @Log(title = "通知公告", businessType = BusinessType.UPDATE)
48   -// @PutMapping
49   -// public AjaxResult edit(@Validated @RequestBody SysNotice notice) {
50   -// notice.setUpdateBy(SecurityUtils.getUsername());
51   -// return toAjax(noticeService.updateNotice(notice));
52   -// }
53   -//
54   -// /**
55   -// * 删除通知公告
56   -// */
  56 + @PostMapping("/update")
  57 + public CommonResult<Boolean> updateNotice(@Validated @RequestBody SysNoticeUpdateReqVO reqVO) {
  58 + noticeService.updateNotice(reqVO);
  59 + return success(true);
  60 + }
  61 +
  62 + @ApiOperation("删除通知公告")
  63 + @ApiImplicitParam(name = "id", value = "编号", readOnly = true, example = "1024", dataTypeClass = Long.class)
57 64 // @PreAuthorize("@ss.hasPermi('system:notice:remove')")
58 65 // @Log(title = "通知公告", businessType = BusinessType.DELETE)
59   -// @DeleteMapping("/{noticeIds}")
60   -// public AjaxResult remove(@PathVariable Long[] noticeIds) {
61   -// return toAjax(noticeService.deleteNoticeByIds(noticeIds));
62   -// }
  66 + @PostMapping("/delete")
  67 + public CommonResult<Boolean> deleteNotice(@RequestParam("id") Long id) {
  68 + noticeService.deleteNotice(id);
  69 + return success(true);
  70 + }
63 71  
64 72 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeBaseVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.notice.vo;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +
  6 +import javax.validation.constraints.NotBlank;
  7 +import javax.validation.constraints.NotNull;
  8 +import javax.validation.constraints.Size;
  9 +
  10 +/**
  11 + * 通知公告 Base VO,提供给添加、修改、详细的子 VO 使用
  12 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  13 + */
  14 +@Data
  15 +public class SysNoticeBaseVO {
  16 +
  17 + @ApiModelProperty(value = "公告标题", required = true, example = "小博主")
  18 + @NotBlank(message = "公告标题不能为空")
  19 + @Size(max = 50, message = "公告标题不能超过50个字符")
  20 + private String title;
  21 +
  22 + @ApiModelProperty(value = "公告标题", required = true, example = "小博主")
  23 + @NotNull(message = "公告类型不能为空")
  24 + private Integer type;
  25 +
  26 + @ApiModelProperty(value = "公告内容", required = true, example = "半生编码")
  27 + private String content;
  28 +
  29 + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  30 + private Integer status;
  31 +
  32 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.notice.vo;
  2 +
  3 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostBaseVO;
  4 +import io.swagger.annotations.ApiModel;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +
  8 +@ApiModel("通知公告创建 Request VO")
  9 +@Data
  10 +@EqualsAndHashCode(callSuper = true)
  11 +public class SysNoticeCreateReqVO extends SysPostBaseVO {
  12 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticePageReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.notice.vo;
  2 +
  3 +import cn.iocoder.dashboard.common.pojo.PageParam;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +
  9 +@ApiModel("通知公告分页 Request VO")
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +public class SysNoticePageReqVO extends PageParam {
  13 +
  14 + @ApiModelProperty(value = "通知公告名称", example = "芋道", notes = "模糊匹配")
  15 + private String title;
  16 +
  17 + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  18 + private Integer status;
  19 +
  20 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeRespVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.notice.vo;
  2 +
  3 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostBaseVO;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +
  9 +import java.util.Date;
  10 +
  11 +@ApiModel("通知公告信息 Response VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +public class SysNoticeRespVO extends SysPostBaseVO {
  15 +
  16 + @ApiModelProperty(value = "通知公告序号", required = true, example = "1024")
  17 + private Long id;
  18 +
  19 + @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
  20 + private Date createTime;
  21 +
  22 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.notice.vo;
  2 +
  3 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostBaseVO;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +@ApiModel("岗位公告更新 Request VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +public class SysNoticeUpdateReqVO extends SysPostBaseVO {
  15 +
  16 + @ApiModelProperty(value = "岗位公告编号", required = true, example = "1024")
  17 + @NotNull(message = "岗位公告编号不能为空")
  18 + private Long id;
  19 +
  20 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuRespVO.java
... ... @@ -17,7 +17,7 @@ import java.util.Date;
17 17 public class SysMenuRespVO extends SysMenuBaseVO {
18 18  
19 19 @ApiModelProperty(value = "菜单编号", required = true, example = "1024")
20   - private Integer id;
  20 + private Long id;
21 21  
22 22 @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
23 23 private Integer status;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java
... ... @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
13 13 public class SysMenuSimpleRespVO {
14 14  
15 15 @ApiModelProperty(value = "菜单编号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "菜单名称", required = true, example = "芋道")
19 19 private String name;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleRespVO.java
... ... @@ -18,7 +18,7 @@ import java.util.Set;
18 18 public class SysRoleRespVO extends SysRoleBaseVO {
19 19  
20 20 @ApiModelProperty(value = "角色编号", required = true, example = "1")
21   - private Integer id;
  21 + private Long id;
22 22  
23 23 @ApiModelProperty(value = "数据范围", required = true, example = "1", notes = "参见 DataScopeEnum 枚举类")
24 24 private Integer dataScope;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java
... ... @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
13 13 public class SysRoleSimpleRespVO {
14 14  
15 15 @ApiModelProperty(value = "角色编号", required = true, example = "1024")
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "角色名称", required = true, example = "芋道")
19 19 private String name;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java
... ... @@ -24,7 +24,7 @@ public class SysUserPageItemRespVO extends SysUserRespVO {
24 24 public static class Dept {
25 25  
26 26 @ApiModelProperty(value = "部门编号", required = true, example = "1")
27   - private Integer id;
  27 + private Long id;
28 28  
29 29 @ApiModelProperty(value = "部门名称", required = true, example = "研发部")
30 30 private String name;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserRespVO.java
... ... @@ -17,7 +17,7 @@ import java.util.Date;
17 17 public class SysUserRespVO extends SysUserBaseVO {
18 18  
19 19 @ApiModelProperty(value = "用户编号", required = true, example = "1")
20   - private Integer id;
  20 + private Long id;
21 21  
22 22 @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
23 23 private Integer status;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/convert/notice/SysNoticeConvert.java
1 1 package cn.iocoder.dashboard.modules.system.convert.notice;
2 2  
  3 +import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeRespVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
  7 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.notice.SysNoticeDO;
  8 +import com.baomidou.mybatisplus.core.metadata.IPage;
3 9 import org.mapstruct.Mapper;
  10 +import org.mapstruct.Mapping;
4 11 import org.mapstruct.factory.Mappers;
5 12  
6 13 @Mapper
... ... @@ -8,4 +15,15 @@ public interface SysNoticeConvert {
8 15  
9 16 SysNoticeConvert INSTANCE = Mappers.getMapper(SysNoticeConvert.class);
10 17  
  18 + PageResult<SysNoticeRespVO> convertPage(PageResult<SysNoticeDO> page);
  19 +
  20 + SysNoticeRespVO convert(SysNoticeDO bean);
  21 +
  22 + SysNoticeDO convert(SysNoticeUpdateReqVO bean);
  23 +
  24 + SysNoticeDO convert(SysNoticeCreateReqVO bean);
  25 +
  26 + @Mapping(source = "records", target = "list")
  27 + PageResult<SysNoticeDO> convertPage02(IPage<SysNoticeDO> page);
  28 +
11 29 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/notice/SysNoticeMapper.java
1 1 package cn.iocoder.dashboard.modules.system.dal.mysql.dao.notice;
2 2  
  3 +import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
  4 +import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils;
  5 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO;
3 6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.notice.SysNoticeDO;
4 7 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8 +import com.baomidou.mybatisplus.core.metadata.IPage;
5 9 import org.apache.ibatis.annotations.Mapper;
6 10  
7 11 @Mapper
8 12 public interface SysNoticeMapper extends BaseMapper<SysNoticeDO> {
  13 +
  14 + default IPage<SysNoticeDO> selectList(SysNoticePageReqVO reqVO) {
  15 + return selectPage(MyBatisUtils.buildPage(reqVO),
  16 + new QueryWrapperX<SysNoticeDO>().likeIfPresent("title", reqVO.getTitle())
  17 + .eqIfPresent("status", reqVO.getStatus()));
  18 + }
  19 +
9 20 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/notice/SysNoticeDO.java
... ... @@ -8,9 +8,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.Data;
9 9 import lombok.EqualsAndHashCode;
10 10  
11   -import javax.validation.constraints.NotBlank;
12   -import javax.validation.constraints.Size;
13   -
14 11 /**
15 12 * 通知公告表
16 13 *
... ... @@ -28,8 +25,7 @@ public class SysNoticeDO extends BaseDO {
28 25 /**
29 26 * 公告标题
30 27 */
31   - @NotBlank(message = "公告标题不能为空")
32   - @Size(max = 50, message = "公告标题不能超过50个字符")
  28 +
33 29 private String title;
34 30 /**
35 31 * 公告类型
... ... @@ -37,7 +33,7 @@ public class SysNoticeDO extends BaseDO {
37 33 * 枚举 {@link SysNoticeTypeEnum}
38 34 */
39 35 @TableField("notice_type")
40   - private String type;
  36 + private Integer type;
41 37 /**
42 38 * 公告内容
43 39 */
... ...
src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java
... ... @@ -66,4 +66,7 @@ public interface SysErrorCodeConstants {
66 66 ErrorCode DICT_DATA_NOT_ENABLE = new ErrorCode(1002007002, "字典数据不处于开启状态,不允许选择");
67 67 ErrorCode DICT_DATA_VALUE_DUPLICATE = new ErrorCode(1002007003, "已经存在该值的字典数据");
68 68  
  69 + // ========== 通知公告 1002008000 ==========
  70 + ErrorCode NOTICE_NOT_FOUND = new ErrorCode(1002008001, "当前通知公告不存在");
  71 +
69 72 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeService.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service.notice;
  2 +
  3 +import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
  7 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.notice.SysNoticeDO;
  8 +
  9 +/**
  10 + * 通知公告 Service 接口
  11 + */
  12 +public interface SysNoticeService {
  13 +
  14 + /**
  15 + * 获得岗位公告公告分页列表
  16 + *
  17 + * @param reqVO 分页条件
  18 + * @return 部门分页列表
  19 + */
  20 + PageResult<SysNoticeDO> pageNotices(SysNoticePageReqVO reqVO);
  21 +
  22 + /**
  23 + * 获得岗位公告公告信息
  24 + *
  25 + * @param id 岗位公告公告编号
  26 + * @return 岗位公告公告信息
  27 + */
  28 + SysNoticeDO getNotice(Long id);
  29 +
  30 + /**
  31 + * 创建岗位公告公告
  32 + *
  33 + * @param reqVO 岗位公告公告信息
  34 + * @return 岗位公告公告编号
  35 + */
  36 + Long createNotice(SysNoticeCreateReqVO reqVO);
  37 +
  38 + /**
  39 + * 更新岗位公告公告
  40 + *
  41 + * @param reqVO 岗位公告公告信息
  42 + */
  43 + void updateNotice(SysNoticeUpdateReqVO reqVO);
  44 +
  45 + /**
  46 + * 删除岗位公告公告信息
  47 + *
  48 + * @param id 岗位公告公告编号
  49 + */
  50 + void deleteNotice(Long id);
  51 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/notice/impl/SysNoticeServiceImpl.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service.notice.impl;
  2 +
  3 +import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
  4 +import cn.iocoder.dashboard.common.pojo.PageResult;
  5 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
  8 +import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert;
  9 +import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert;
  10 +import cn.iocoder.dashboard.modules.system.dal.mysql.dao.notice.SysNoticeMapper;
  11 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.notice.SysNoticeDO;
  12 +import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import javax.annotation.Resource;
  16 +
  17 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
  18 +
  19 +/**
  20 + * 通知公告 Service 实现类
  21 + *
  22 + * @author 芋道源码
  23 + */
  24 +@Service
  25 +public class SysNoticeServiceImpl implements SysNoticeService {
  26 +
  27 + @Resource
  28 + private SysNoticeMapper noticeMapper;
  29 +
  30 + @Override
  31 + public PageResult<SysNoticeDO> pageNotices(SysNoticePageReqVO reqVO) {
  32 + return SysNoticeConvert.INSTANCE.convertPage02(noticeMapper.selectList(reqVO));
  33 + }
  34 +
  35 + @Override
  36 + public SysNoticeDO getNotice(Long id) {
  37 + return noticeMapper.selectById(id);
  38 + }
  39 +
  40 + @Override
  41 + public Long createNotice(SysNoticeCreateReqVO reqVO) {
  42 + SysNoticeDO notice = SysNoticeConvert.INSTANCE.convert(reqVO);
  43 + return notice.getId();
  44 + }
  45 +
  46 + @Override
  47 + public void updateNotice(SysNoticeUpdateReqVO reqVO) {
  48 + // 校验是否存在
  49 + this.checkNoticeExists(reqVO.getId());
  50 + // 更新通知公告
  51 + SysNoticeDO updateObj = SysNoticeConvert.INSTANCE.convert(reqVO);
  52 + noticeMapper.updateById(updateObj);
  53 + }
  54 +
  55 + @Override
  56 + public void deleteNotice(Long id) {
  57 + // 校验是否存在
  58 + this.checkNoticeExists(id);
  59 + // 删除通知公告
  60 + noticeMapper.deleteById(id);
  61 + }
  62 +
  63 + private void checkNoticeExists(Long id) {
  64 + if (id == null) {
  65 + return;
  66 + }
  67 + SysNoticeDO notice = noticeMapper.selectById(id);
  68 + if (notice == null) {
  69 + throw ServiceExceptionUtil.exception(NOTICE_NOT_FOUND);
  70 + }
  71 + }
  72 +
  73 +}
... ...