Commit ba6c879ee1c9a7f4b37c959bed1d63c0b1c68ca1

Authored by YunaiV
1 parent e4fd022c

完成岗位的迁移

ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java deleted
1   -package com.ruoyi.web.controller.system;
2   -
3   -import java.util.List;
4   -import org.springframework.beans.factory.annotation.Autowired;
5   -import org.springframework.security.access.prepost.PreAuthorize;
6   -import org.springframework.validation.annotation.Validated;
7   -import org.springframework.web.bind.annotation.DeleteMapping;
8   -import org.springframework.web.bind.annotation.GetMapping;
9   -import org.springframework.web.bind.annotation.PathVariable;
10   -import org.springframework.web.bind.annotation.PostMapping;
11   -import org.springframework.web.bind.annotation.PutMapping;
12   -import org.springframework.web.bind.annotation.RequestBody;
13   -import org.springframework.web.bind.annotation.RequestMapping;
14   -import org.springframework.web.bind.annotation.RestController;
15   -import com.ruoyi.common.annotation.Log;
16   -import com.ruoyi.common.constant.UserConstants;
17   -import com.ruoyi.common.core.controller.BaseController;
18   -import com.ruoyi.common.core.domain.AjaxResult;
19   -import com.ruoyi.common.core.page.TableDataInfo;
20   -import com.ruoyi.common.enums.BusinessType;
21   -import com.ruoyi.common.utils.SecurityUtils;
22   -import com.ruoyi.common.utils.poi.ExcelUtil;
23   -import com.ruoyi.system.domain.SysPost;
24   -import com.ruoyi.system.service.ISysPostService;
25   -
26   -/**
27   - * 岗位信息操作处理
28   - *
29   - * @author ruoyi
30   - */
31   -@RestController
32   -@RequestMapping("/system/post")
33   -public class SysPostController extends BaseController
34   -{
35   - @Autowired
36   - private ISysPostService postService;
37   -
38   - /**
39   - * 获取岗位列表
40   - */
41   - @PreAuthorize("@ss.hasPermi('system:post:list')")
42   - @GetMapping("/list")
43   - public TableDataInfo list(SysPost post)
44   - {
45   - startPage();
46   - List<SysPost> list = postService.selectPostList(post);
47   - return getDataTable(list);
48   - }
49   -
50   - @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
51   - @PreAuthorize("@ss.hasPermi('system:post:export')")
52   - @GetMapping("/export")
53   - public AjaxResult export(SysPost post)
54   - {
55   - List<SysPost> list = postService.selectPostList(post);
56   - ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
57   - return util.exportExcel(list, "岗位数据");
58   - }
59   -
60   - /**
61   - * 根据岗位编号获取详细信息
62   - */
63   - @PreAuthorize("@ss.hasPermi('system:post:query')")
64   - @GetMapping(value = "/{postId}")
65   - public AjaxResult getInfo(@PathVariable Long postId)
66   - {
67   - return AjaxResult.success(postService.selectPostById(postId));
68   - }
69   -
70   - /**
71   - * 新增岗位
72   - */
73   - @PreAuthorize("@ss.hasPermi('system:post:add')")
74   - @Log(title = "岗位管理", businessType = BusinessType.INSERT)
75   - @PostMapping
76   - public AjaxResult add(@Validated @RequestBody SysPost post)
77   - {
78   - if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
79   - {
80   - return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
81   - }
82   - else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
83   - {
84   - return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
85   - }
86   - post.setCreateBy(SecurityUtils.getUsername());
87   - return toAjax(postService.insertPost(post));
88   - }
89   -
90   - /**
91   - * 修改岗位
92   - */
93   - @PreAuthorize("@ss.hasPermi('system:post:edit')")
94   - @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
95   - @PutMapping
96   - public AjaxResult edit(@Validated @RequestBody SysPost post)
97   - {
98   - if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
99   - {
100   - return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
101   - }
102   - else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
103   - {
104   - return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
105   - }
106   - post.setUpdateBy(SecurityUtils.getUsername());
107   - return toAjax(postService.updatePost(post));
108   - }
109   -
110   - /**
111   - * 删除岗位
112   - */
113   - @PreAuthorize("@ss.hasPermi('system:post:remove')")
114   - @Log(title = "岗位管理", businessType = BusinessType.DELETE)
115   - @DeleteMapping("/{postIds}")
116   - public AjaxResult remove(@PathVariable Long[] postIds)
117   - {
118   - return toAjax(postService.deletePostByIds(postIds));
119   - }
120   -
121   - /**
122   - * 获取岗位选择框列表
123   - */
124   - @GetMapping("/optionselect")
125   - public AjaxResult optionselect()
126   - {
127   - List<SysPost> posts = postService.selectPostAll();
128   - return AjaxResult.success(posts);
129   - }
130   -}
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java deleted
1   -package com.ruoyi.common.constant;
2   -
3   -/**
4   - * 用户常量信息
5   - *
6   - * @author ruoyi
7   - */
8   -public class UserConstants
9   -{
10   - /**
11   - * 平台内系统用户的唯一标志
12   - */
13   - public static final String SYS_USER = "SYS_USER";
14   -
15   - /** 正常状态 */
16   - public static final String NORMAL = "0";
17   -
18   - /** 异常状态 */
19   - public static final String EXCEPTION = "1";
20   -
21   - /** 用户封禁状态 */
22   - public static final String USER_DISABLE = "1";
23   -
24   - /** 角色封禁状态 */
25   - public static final String ROLE_DISABLE = "1";
26   -
27   - /** 部门正常状态 */
28   - public static final String DEPT_NORMAL = "0";
29   -
30   - /** 部门停用状态 */
31   - public static final String DEPT_DISABLE = "1";
32   -
33   - /** 字典正常状态 */
34   - public static final String DICT_NORMAL = "0";
35   -
36   - /** 是否为系统默认(是) */
37   - public static final String YES = "Y";
38   -
39   - /** 是否菜单外链(是) */
40   - public static final String YES_FRAME = "0";
41   -
42   - /** 是否菜单外链(否) */
43   - public static final String NO_FRAME = "1";
44   -
45   - /** Layout组件标识 */
46   - public final static String LAYOUT = "Layout";
47   -
48   - /** ParentView组件标识 */
49   - public final static String PARENT_VIEW = "ParentView";
50   -
51   - /** 校验返回结果码 */
52   - public final static String UNIQUE = "0";
53   - public final static String NOT_UNIQUE = "1";
54   -}
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java deleted
1   -package com.ruoyi.common.core.controller;
2   -
3   -import java.beans.PropertyEditorSupport;
4   -import java.util.Date;
5   -import java.util.List;
6   -
7   -import org.slf4j.Logger;
8   -import org.slf4j.LoggerFactory;
9   -import org.springframework.web.bind.WebDataBinder;
10   -import org.springframework.web.bind.annotation.InitBinder;
11   -import com.github.pagehelper.PageHelper;
12   -import com.github.pagehelper.PageInfo;
13   -import com.ruoyi.common.constant.HttpStatus;
14   -import com.ruoyi.common.core.domain.AjaxResult;
15   -import com.ruoyi.common.core.page.PageDomain;
16   -import com.ruoyi.common.core.page.TableDataInfo;
17   -import com.ruoyi.common.core.page.TableSupport;
18   -import com.ruoyi.common.utils.DateUtils;
19   -import com.ruoyi.common.utils.StringUtils;
20   -import com.ruoyi.common.utils.sql.SqlUtil;
21   -
22   -/**
23   - * web层通用数据处理
24   - *
25   - * @author ruoyi
26   - */
27   -public class BaseController {
28   - protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
29   -
30   - /**
31   - * 将前台传递过来的日期格式的字符串,自动转化为Date类型
32   - */
33   - @InitBinder
34   - public void initBinder(WebDataBinder binder) {
35   - // Date 类型转换
36   - binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
37   - @Override
38   - public void setAsText(String text) {
39   - setValue(DateUtils.parseDate(text));
40   - }
41   - });
42   - }
43   -
44   -}
ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java deleted
1   -package com.ruoyi.common.enums;
2   -
3   -import java.util.HashMap;
4   -import java.util.Map;
5   -import org.springframework.lang.Nullable;
6   -
7   -/**
8   - * 请求方式
9   - *
10   - * @author ruoyi
11   - */
12   -public enum HttpMethod
13   -{
14   - GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
15   -
16   - private static final Map<String, HttpMethod> mappings = new HashMap<>(16);
17   -
18   - static
19   - {
20   - for (HttpMethod httpMethod : values())
21   - {
22   - mappings.put(httpMethod.name(), httpMethod);
23   - }
24   - }
25   -
26   - @Nullable
27   - public static HttpMethod resolve(@Nullable String method)
28   - {
29   - return (method != null ? mappings.get(method) : null);
30   - }
31   -
32   - public boolean matches(String method)
33   - {
34   - return (this == resolve(method));
35   - }
36   -}
ruoyi-ui/src/api/system/post.js
... ... @@ -3,7 +3,7 @@ import request from &#39;@/utils/request&#39;
3 3 // 查询岗位列表
4 4 export function listPost(query) {
5 5 return request({
6   - url: '/system/post/list',
  6 + url: '/system/post/page',
7 7 method: 'get',
8 8 params: query
9 9 })
... ... @@ -20,7 +20,7 @@ export function listSimplePosts() {
20 20 // 查询岗位详细
21 21 export function getPost(postId) {
22 22 return request({
23   - url: '/system/post/' + postId,
  23 + url: '/system/post/get?id=' + postId,
24 24 method: 'get'
25 25 })
26 26 }
... ... @@ -28,7 +28,7 @@ export function getPost(postId) {
28 28 // 新增岗位
29 29 export function addPost(data) {
30 30 return request({
31   - url: '/system/post',
  31 + url: '/system/post/create',
32 32 method: 'post',
33 33 data: data
34 34 })
... ... @@ -37,8 +37,8 @@ export function addPost(data) {
37 37 // 修改岗位
38 38 export function updatePost(data) {
39 39 return request({
40   - url: '/system/post',
41   - method: 'put',
  40 + url: '/system/post/update',
  41 + method: 'post',
42 42 data: data
43 43 })
44 44 }
... ... @@ -46,8 +46,8 @@ export function updatePost(data) {
46 46 // 删除岗位
47 47 export function delPost(postId) {
48 48 return request({
49   - url: '/system/post/' + postId,
50   - method: 'delete'
  49 + url: '/system/post/delete?id=' + postId,
  50 + method: 'post'
51 51 })
52 52 }
53 53  
... ...
ruoyi-ui/src/views/system/dept/index.vue
... ... @@ -142,7 +142,7 @@ import { listDept, getDept, delDept, addDept, updateDept } from &quot;@/api/system/de
142 142 import Treeselect from "@riophae/vue-treeselect";
143 143 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
144 144  
145   -import {SysCommonStatusEnum, SysMenuTypeEnum} from '@/utils/constants'
  145 +import {SysCommonStatusEnum} from '@/utils/constants'
146 146 import { getDictDataLabel, getDictDatas, DICT_TYPE } from '@/utils/dict'
147 147  
148 148 export default {
... ... @@ -249,7 +249,7 @@ export default {
249 249 leader: undefined,
250 250 phone: undefined,
251 251 email: undefined,
252   - status: "0"
  252 + status: SysCommonStatusEnum.ENABLE,
253 253 };
254 254 this.resetForm("form");
255 255 },
... ...
ruoyi-ui/src/views/system/post/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="postCode">
  4 + <el-form-item label="岗位编码" prop="code">
5 5 <el-input
6   - v-model="queryParams.postCode"
  6 + v-model="queryParams.code"
7 7 placeholder="请输入岗位编码"
8 8 clearable
9 9 size="small"
10 10 @keyup.enter.native="handleQuery"
11 11 />
12 12 </el-form-item>
13   - <el-form-item label="岗位名称" prop="postName">
  13 + <el-form-item label="岗位名称" prop="name">
14 14 <el-input
15   - v-model="queryParams.postName"
  15 + v-model="queryParams.name"
16 16 placeholder="请输入岗位名称"
17 17 clearable
18 18 size="small"
... ... @@ -22,10 +22,10 @@
22 22 <el-form-item label="状态" prop="status">
23 23 <el-select v-model="queryParams.status" placeholder="岗位状态" clearable size="small">
24 24 <el-option
25   - v-for="dict in statusOptions"
26   - :key="dict.dictValue"
27   - :label="dict.dictLabel"
28   - :value="dict.dictValue"
  25 + v-for="dict in statusDictDatas"
  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>
... ... @@ -47,26 +47,6 @@
47 47 </el-col>
48 48 <el-col :span="1.5">
49 49 <el-button
50   - type="success"
51   - icon="el-icon-edit"
52   - size="mini"
53   - :disabled="single"
54   - @click="handleUpdate"
55   - v-hasPermi="['system:post: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:post:remove']"
66   - >删除</el-button>
67   - </el-col>
68   - <el-col :span="1.5">
69   - <el-button
70 50 type="warning"
71 51 icon="el-icon-download"
72 52 size="mini"
... ... @@ -77,12 +57,11 @@
77 57 <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
78 58 </el-row>
79 59  
80   - <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
81   - <el-table-column type="selection" width="55" align="center" />
82   - <el-table-column label="岗位编号" align="center" prop="postId" />
83   - <el-table-column label="岗位编码" align="center" prop="postCode" />
84   - <el-table-column label="岗位名称" align="center" prop="postName" />
85   - <el-table-column label="岗位排序" align="center" prop="postSort" />
  60 + <el-table v-loading="loading" :data="postList">
  61 + <el-table-column label="岗位编号" align="center" prop="id" />
  62 + <el-table-column label="岗位编码" align="center" prop="code" />
  63 + <el-table-column label="岗位名称" align="center" prop="name" />
  64 + <el-table-column label="岗位排序" align="center" prop="sort" />
86 65 <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
87 66 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
88 67 <template slot-scope="scope">
... ... @@ -108,11 +87,11 @@
108 87 </template>
109 88 </el-table-column>
110 89 </el-table>
111   -
  90 +
112 91 <pagination
113 92 v-show="total>0"
114 93 :total="total"
115   - :page.sync="queryParams.pageNum"
  94 + :page.sync="queryParams.pageNo"
116 95 :limit.sync="queryParams.pageSize"
117 96 @pagination="getList"
118 97 />
... ... @@ -120,22 +99,22 @@
120 99 <!-- 添加或修改岗位对话框 -->
121 100 <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
122 101 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
123   - <el-form-item label="岗位名称" prop="postName">
124   - <el-input v-model="form.postName" placeholder="请输入岗位名称" />
  102 + <el-form-item label="岗位名称" prop="name">
  103 + <el-input v-model="form.name" placeholder="请输入岗位名称" />
125 104 </el-form-item>
126   - <el-form-item label="岗位编码" prop="postCode">
127   - <el-input v-model="form.postCode" placeholder="请输入编码名称" />
  105 + <el-form-item label="岗位编码" prop="code">
  106 + <el-input v-model="form.code" placeholder="请输入编码名称" />
128 107 </el-form-item>
129   - <el-form-item label="岗位顺序" prop="postSort">
130   - <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
  108 + <el-form-item label="岗位顺序" prop="sort">
  109 + <el-input-number v-model="form.sort" controls-position="right" :min="0" />
131 110 </el-form-item>
132 111 <el-form-item label="岗位状态" prop="status">
133 112 <el-radio-group v-model="form.status">
134 113 <el-radio
135   - v-for="dict in statusOptions"
136   - :key="dict.dictValue"
137   - :label="dict.dictValue"
138   - >{{dict.dictLabel}}</el-radio>
  114 + v-for="dict in statusDictDatas"
  115 + :key="parseInt(dict.value)"
  116 + :label="parseInt(dict.value)"
  117 + >{{dict.label}}</el-radio>
139 118 </el-radio-group>
140 119 </el-form-item>
141 120 <el-form-item label="备注" prop="remark">
... ... @@ -153,6 +132,9 @@
153 132 <script>
154 133 import { listPost, getPost, delPost, addPost, updatePost, exportPost } from "@/api/system/post";
155 134  
  135 +import {SysCommonStatusEnum} from '@/utils/constants'
  136 +import { getDictDataLabel, getDictDatas, DICT_TYPE } from '@/utils/dict'
  137 +
156 138 export default {
157 139 name: "Post",
158 140 data() {
... ... @@ -179,47 +161,49 @@ export default {
179 161 statusOptions: [],
180 162 // 查询参数
181 163 queryParams: {
182   - pageNum: 1,
  164 + pageNo: 1,
183 165 pageSize: 10,
184   - postCode: undefined,
185   - postName: undefined,
  166 + code: undefined,
  167 + name: undefined,
186 168 status: undefined
187 169 },
188 170 // 表单参数
189 171 form: {},
190 172 // 表单校验
191 173 rules: {
192   - postName: [
  174 + name: [
193 175 { required: true, message: "岗位名称不能为空", trigger: "blur" }
194 176 ],
195   - postCode: [
  177 + code: [
196 178 { required: true, message: "岗位编码不能为空", trigger: "blur" }
197 179 ],
198   - postSort: [
  180 + sort: [
199 181 { required: true, message: "岗位顺序不能为空", trigger: "blur" }
200 182 ]
201   - }
  183 + },
  184 +
  185 + // 枚举
  186 + CommonStatusEnum: SysCommonStatusEnum,
  187 + // 数据字典
  188 + statusDictDatas: getDictDatas(DICT_TYPE.SYS_COMMON_STATUS)
202 189 };
203 190 },
204 191 created() {
205 192 this.getList();
206   - this.getDicts("sys_normal_disable").then(response => {
207   - this.statusOptions = response.data;
208   - });
209 193 },
210 194 methods: {
211 195 /** 查询岗位列表 */
212 196 getList() {
213 197 this.loading = true;
214 198 listPost(this.queryParams).then(response => {
215   - this.postList = response.rows;
216   - this.total = response.total;
  199 + this.postList = response.data.list;
  200 + this.total = response.data.total;
217 201 this.loading = false;
218 202 });
219 203 },
220 204 // 岗位状态字典翻译
221 205 statusFormat(row, column) {
222   - return this.selectDictLabel(this.statusOptions, row.status);
  206 + return getDictDataLabel(DICT_TYPE.SYS_COMMON_STATUS, row.status)
223 207 },
224 208 // 取消按钮
225 209 cancel() {
... ... @@ -229,18 +213,18 @@ export default {
229 213 // 表单重置
230 214 reset() {
231 215 this.form = {
232   - postId: undefined,
233   - postCode: undefined,
234   - postName: undefined,
235   - postSort: 0,
236   - status: "0",
  216 + id: undefined,
  217 + code: undefined,
  218 + name: undefined,
  219 + sort: 0,
  220 + status: SysCommonStatusEnum.ENABLE,
237 221 remark: undefined
238 222 };
239 223 this.resetForm("form");
240 224 },
241 225 /** 搜索按钮操作 */
242 226 handleQuery() {
243   - this.queryParams.pageNum = 1;
  227 + this.queryParams.pageNo = 1;
244 228 this.getList();
245 229 },
246 230 /** 重置按钮操作 */
... ... @@ -248,12 +232,6 @@ export default {
248 232 this.resetForm("queryForm");
249 233 this.handleQuery();
250 234 },
251   - // 多选框选中数据
252   - handleSelectionChange(selection) {
253   - this.ids = selection.map(item => item.postId)
254   - this.single = selection.length!=1
255   - this.multiple = !selection.length
256   - },
257 235 /** 新增按钮操作 */
258 236 handleAdd() {
259 237 this.reset();
... ... @@ -263,8 +241,8 @@ export default {
263 241 /** 修改按钮操作 */
264 242 handleUpdate(row) {
265 243 this.reset();
266   - const postId = row.postId || this.ids
267   - getPost(postId).then(response => {
  244 + const id = row.id
  245 + getPost(id).then(response => {
268 246 this.form = response.data;
269 247 this.open = true;
270 248 this.title = "修改岗位";
... ... @@ -274,7 +252,7 @@ export default {
274 252 submitForm: function() {
275 253 this.$refs["form"].validate(valid => {
276 254 if (valid) {
277   - if (this.form.postId != undefined) {
  255 + if (this.form.id !== undefined) {
278 256 updatePost(this.form).then(response => {
279 257 this.msgSuccess("修改成功");
280 258 this.open = false;
... ... @@ -292,13 +270,13 @@ export default {
292 270 },
293 271 /** 删除按钮操作 */
294 272 handleDelete(row) {
295   - const postIds = row.postId || this.ids;
296   - this.$confirm('是否确认删除岗位编号为"' + postIds + '"的数据项?', "警告", {
  273 + const ids = row.id;
  274 + this.$confirm('是否确认删除岗位编号为"' + ids + '"的数据项?', "警告", {
297 275 confirmButtonText: "确定",
298 276 cancelButtonText: "取消",
299 277 type: "warning"
300 278 }).then(function() {
301   - return delPost(postIds);
  279 + return delPost(ids);
302 280 }).then(() => {
303 281 this.getList();
304 282 this.msgSuccess("删除成功");
... ... @@ -319,4 +297,4 @@ export default {
319 297 }
320 298 }
321 299 };
322   -</script>
323 300 \ No newline at end of file
  301 +</script>
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysPostController.java
... ... @@ -2,15 +2,16 @@ package cn.iocoder.dashboard.modules.system.controller.dept;
2 2  
3 3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.dashboard.common.pojo.CommonResult;
5   -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostSimpleRespVO;
  5 +import cn.iocoder.dashboard.common.pojo.PageResult;
  6 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.*;
6 7 import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert;
7 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
8 9 import cn.iocoder.dashboard.modules.system.service.dept.SysPostService;
9 10 import io.swagger.annotations.Api;
  11 +import io.swagger.annotations.ApiImplicitParam;
10 12 import io.swagger.annotations.ApiOperation;
11   -import org.springframework.web.bind.annotation.GetMapping;
12   -import org.springframework.web.bind.annotation.RequestMapping;
13   -import org.springframework.web.bind.annotation.RestController;
  13 +import org.springframework.validation.annotation.Validated;
  14 +import org.springframework.web.bind.annotation.*;
14 15  
15 16 import javax.annotation.Resource;
16 17 import java.util.Collections;
... ... @@ -37,4 +38,54 @@ public class SysPostController {
37 38 return success(SysPostConvert.INSTANCE.convertList02(list));
38 39 }
39 40  
  41 + @ApiOperation("获得岗位分页列表")
  42 + @GetMapping("/page")
  43 +// @PreAuthorize("@ss.hasPermi('system:post:list')")
  44 + public CommonResult<PageResult<SysPostRespVO>> pagePosts(@Validated SysPostPageReqVO reqVO) {
  45 + return success(SysPostConvert.INSTANCE.convertPage(postService.pagePosts(reqVO)));
  46 + }
  47 +
  48 + @ApiOperation("新增岗位")
  49 + @PostMapping("/create")
  50 +// @PreAuthorize("@ss.hasPermi('system:post:add')")
  51 +// @Log(title = "岗位管理", businessType = BusinessType.INSERT)
  52 + public CommonResult<Long> createPost(@Validated @RequestBody SysPostCreateReqVO reqVO) {
  53 + Long postId = postService.createPost(reqVO);
  54 + return success(postId);
  55 + }
  56 +
  57 + @ApiOperation("修改岗位")
  58 + @PostMapping("/update")
  59 +// @PreAuthorize("@ss.hasPermi('system:post:edit')")
  60 +// @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
  61 + public CommonResult<Boolean> updatePost(@Validated @RequestBody SysPostUpdateReqVO reqVO) {
  62 + postService.updatePost(reqVO);
  63 + return success(true);
  64 + }
  65 +
  66 + @ApiOperation("删除岗位")
  67 + @PostMapping("/delete")
  68 +// @PreAuthorize("@ss.hasPermi('system:post:remove')")
  69 +// @Log(title = "岗位管理", businessType = BusinessType.DELETE)
  70 + public CommonResult<Boolean> deletePost(@RequestParam("id") Long id) {
  71 + postService.deletePost(id);
  72 + return success(true);
  73 + }
  74 +
  75 + @ApiOperation("获得岗位信息")
  76 + @ApiImplicitParam(name = "id", value = "岗位编号", readOnly = true, example = "1024")
  77 +// @PreAuthorize("@ss.hasPermi('system:post:query')")
  78 + @GetMapping(value = "/get")
  79 + public CommonResult<SysPostRespVO> getPost(@RequestParam("id") Long id) {
  80 + return success(SysPostConvert.INSTANCE.convert(postService.getPost(id)));
  81 + }
  82 +
  83 +// @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
  84 +// @PreAuthorize("@ss.hasPermi('system:post:export')")
  85 +// @GetMapping("/export")
  86 +// public AjaxResult export(SysPost post) {
  87 +// List<SysPost> list = postService.selectPostList(post);
  88 +// ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
  89 +// return util.exportExcel(list, "岗位数据");
  90 +// }
40 91 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostBaseVO.java
... ... @@ -27,6 +27,9 @@ public class SysPostBaseVO {
27 27 @NotBlank(message = "显示顺序不能为空")
28 28 private String sort;
29 29  
  30 + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  31 + private Integer status;
  32 +
30 33 @ApiModelProperty(value = "备注", example = "快乐的备注")
31 34 private String remark;
32 35  
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostPageReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.dept.vo.post;
  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 SysPostPageReqVO extends PageParam {
  13 +
  14 + @ApiModelProperty(value = "岗位名称", example = "芋道", notes = "模糊匹配")
  15 + private String name;
  16 +
  17 + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  18 + private Integer status;
  19 +
  20 +}
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostRespVO.java
... ... @@ -15,9 +15,6 @@ public class SysPostRespVO extends SysPostBaseVO {
15 15 @ApiModelProperty(value = "岗位序号", required = true, example = "1024")
16 16 private Integer id;
17 17  
18   - @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
19   - private Integer status;
20   -
21 18 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
22 19 private Date createTime;
23 20  
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java
... ... @@ -14,6 +14,6 @@ public class SysPostUpdateReqVO extends SysPostBaseVO {
14 14  
15 15 @ApiModelProperty(value = "岗位编号", required = true, example = "1024")
16 16 @NotNull(message = "岗位编号不能为空")
17   - private Integer id;
  17 + private Long id;
18 18  
19 19 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysPostConvert.java
1 1 package cn.iocoder.dashboard.modules.system.convert.dept;
2 2  
  3 +import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostRespVO;
3 6 import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostSimpleRespVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
4 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
  9 +import com.baomidou.mybatisplus.core.metadata.IPage;
5 10 import org.mapstruct.Mapper;
  11 +import org.mapstruct.Mapping;
6 12 import org.mapstruct.factory.Mappers;
7 13  
8 14 import java.util.List;
... ... @@ -14,4 +20,15 @@ public interface SysPostConvert {
14 20  
15 21 List<SysPostSimpleRespVO> convertList02(List<SysPostDO> list);
16 22  
  23 + PageResult<SysPostRespVO> convertPage(PageResult<SysPostDO> page);
  24 +
  25 + SysPostRespVO convert(SysPostDO id);
  26 +
  27 + @Mapping(source = "records", target = "list")
  28 + PageResult<SysPostDO> convertPage02(IPage<SysPostDO> page);
  29 +
  30 + SysPostDO convert(SysPostCreateReqVO bean);
  31 +
  32 + SysPostDO convert(SysPostUpdateReqVO reqVO);
  33 +
17 34 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/dept/SysPostMapper.java
1 1 package cn.iocoder.dashboard.modules.system.dal.mysql.dao.dept;
2 2  
3 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.dept.vo.post.SysPostPageReqVO;
4 6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
  7 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 8 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  9 +import com.baomidou.mybatisplus.core.metadata.IPage;
6 10 import org.apache.ibatis.annotations.Mapper;
7 11  
8 12 import java.util.Collection;
... ... @@ -16,4 +20,18 @@ public interface SysPostMapper extends BaseMapper&lt;SysPostDO&gt; {
16 20 .inIfPresent("status", statuses));
17 21 }
18 22  
  23 + default IPage<SysPostDO> selectList(SysPostPageReqVO reqVO) {
  24 + return selectPage(MyBatisUtils.buildPage(reqVO),
  25 + new QueryWrapperX<SysPostDO>().likeIfPresent("name", reqVO.getName())
  26 + .eqIfPresent("status", reqVO.getStatus()));
  27 + }
  28 +
  29 + default SysPostDO selectByName(String name) {
  30 + return selectOne(new QueryWrapper<SysPostDO>().eq("name", name));
  31 + }
  32 +
  33 + default SysPostDO selectByCode(String code) {
  34 + return selectOne(new QueryWrapper<SysPostDO>().eq("code", code));
  35 + }
  36 +
19 37 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java
... ... @@ -51,5 +51,7 @@ public interface SysErrorCodeConstants {
51 51 // ========== 岗位模块 1002005000 ==========
52 52 ErrorCode POST_NOT_FOUND = new ErrorCode(1002005001, "当前岗位不存在");
53 53 ErrorCode POST_NOT_ENABLE = new ErrorCode(1002005002, "岗位({}) 不处于开启状态,不允许选择");
  54 + ErrorCode POST_NAME_DUPLICATE = new ErrorCode(1002004001, "已经存在该名字的岗位");
  55 + ErrorCode POST_CODE_DUPLICATE = new ErrorCode(1002004001, "已经存在该标识的岗位");
54 56  
55 57 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostService.java
1 1 package cn.iocoder.dashboard.modules.system.service.dept;
2 2  
  3 +import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
3 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
4 8  
5 9 import javax.annotation.Nullable;
... ... @@ -22,4 +26,42 @@ public interface SysPostService {
22 26 */
23 27 List<SysPostDO> listPosts(@Nullable Collection<Long> ids, @Nullable Collection<Integer> statuses);
24 28  
  29 + /**
  30 + * 获得岗位分页列表
  31 + *
  32 + * @param reqVO 分页条件
  33 + * @return 部门分页列表
  34 + */
  35 + PageResult<SysPostDO> pagePosts(SysPostPageReqVO reqVO);
  36 +
  37 + /**
  38 + * 获得岗位信息
  39 + *
  40 + * @param id 岗位编号
  41 + * @return 岗位信息
  42 + */
  43 + SysPostDO getPost(Long id);
  44 +
  45 + /**
  46 + * 创建岗位
  47 + *
  48 + * @param reqVO 岗位信息
  49 + * @return 岗位编号
  50 + */
  51 + Long createPost(SysPostCreateReqVO reqVO);
  52 +
  53 + /**
  54 + * 更新岗位
  55 + *
  56 + * @param reqVO 岗位信息
  57 + */
  58 + void updatePost(SysPostUpdateReqVO reqVO);
  59 +
  60 + /**
  61 + * 删除岗位信息
  62 + *
  63 + * @param id 岗位编号
  64 + */
  65 + void deletePost(Long id);
  66 +
25 67 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysDeptServiceImpl.java
... ... @@ -175,7 +175,7 @@ public class SysDeptServiceImpl implements SysDeptService {
175 175 if (parentId.equals(id)) {
176 176 throw ServiceExceptionUtil.exception(DEPT_PARENT_ERROR);
177 177 }
178   - // 父菜单不存在
  178 + // 父岗位不存在
179 179 SysDeptDO dept = deptMapper.selectById(parentId);
180 180 if (dept == null) {
181 181 throw ServiceExceptionUtil.exception(DEPT_PARENT_NOT_EXITS);
... ... @@ -206,7 +206,7 @@ public class SysDeptServiceImpl implements SysDeptService {
206 206 if (menu == null) {
207 207 return;
208 208 }
209   - // 如果 id 为空,说明不用比较是否为相同 id 的菜单
  209 + // 如果 id 为空,说明不用比较是否为相同 id 的岗位
210 210 if (id == null) {
211 211 throw ServiceExceptionUtil.exception(DEPT_NAME_DUPLICATE);
212 212 }
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysPostServiceImpl.java
1 1 package cn.iocoder.dashboard.modules.system.service.dept.impl;
2 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.dept.vo.post.SysPostCreateReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
  8 +import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert;
3 9 import cn.iocoder.dashboard.modules.system.dal.mysql.dao.dept.SysPostMapper;
4 10 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
5 11 import cn.iocoder.dashboard.modules.system.service.dept.SysPostService;
... ... @@ -9,6 +15,8 @@ import javax.annotation.Resource;
9 15 import java.util.Collection;
10 16 import java.util.List;
11 17  
  18 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
  19 +
12 20 /**
13 21 * 岗位 Service 实现类
14 22 *
... ... @@ -25,4 +33,88 @@ public class SysPostServiceImpl implements SysPostService {
25 33 return postMapper.selectList(ids, statuses);
26 34 }
27 35  
  36 + @Override
  37 + public PageResult<SysPostDO> pagePosts(SysPostPageReqVO reqVO) {
  38 + return SysPostConvert.INSTANCE.convertPage02(postMapper.selectList(reqVO));
  39 + }
  40 +
  41 + @Override
  42 + public SysPostDO getPost(Long id) {
  43 + return postMapper.selectById(id);
  44 + }
  45 +
  46 + @Override
  47 + public Long createPost(SysPostCreateReqVO reqVO) {
  48 + // 校验正确性
  49 + this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode());
  50 + // 插入岗位
  51 + SysPostDO post = SysPostConvert.INSTANCE.convert(reqVO);
  52 + postMapper.insert(post);
  53 + return post.getId();
  54 + }
  55 +
  56 + @Override
  57 + public void updatePost(SysPostUpdateReqVO reqVO) {
  58 + // 校验正确性
  59 + this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode());
  60 + // 更新岗位
  61 + SysPostDO updateObj = SysPostConvert.INSTANCE.convert(reqVO);
  62 + postMapper.updateById(updateObj);
  63 + }
  64 +
  65 + private void checkCreateOrUpdate(Long id, String name, String code) {
  66 + // 校验自己存在
  67 + checkPostExists(id);
  68 + // 校验岗位名的唯一性
  69 + checkPostNameUnique(id, name);
  70 + // 校验岗位编码的唯一性
  71 + checkPostCodeUnique(id, code);
  72 + }
  73 +
  74 + private void checkPostNameUnique(Long id, String name) {
  75 + SysPostDO post = postMapper.selectByName(name);
  76 + if (post == null) {
  77 + return;
  78 + }
  79 + // 如果 id 为空,说明不用比较是否为相同 id 的岗位
  80 + if (id == null) {
  81 + throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
  82 + }
  83 + if (!post.getId().equals(id)) {
  84 + throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
  85 + }
  86 + }
  87 +
  88 + private void checkPostCodeUnique(Long id, String code) {
  89 + SysPostDO post = postMapper.selectByCode(code);
  90 + if (post == null) {
  91 + return;
  92 + }
  93 + // 如果 id 为空,说明不用比较是否为相同 id 的岗位
  94 + if (id == null) {
  95 + throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
  96 + }
  97 + if (!post.getId().equals(id)) {
  98 + throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
  99 + }
  100 + }
  101 +
  102 + @Override
  103 + public void deletePost(Long id) {
  104 + // 校验是否存在
  105 + this.checkPostExists(id);
  106 + // 删除部门
  107 + postMapper.deleteById(id);
  108 + }
  109 +
  110 + private void checkPostExists(Long id) {
  111 + if (id == null) {
  112 + return;
  113 + }
  114 + SysPostDO post = postMapper.selectById(id);
  115 + if (post == null) {
  116 + throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
  117 + }
  118 + }
  119 +
28 120 }
... ...