package com.fengdu.gas.host.controller.base;
|
|
import com.fengdu.gas.common.ConstantFactory;
|
import com.fengdu.gas.common.ExecutedResult;
|
import com.fengdu.gas.common.PagerResult;
|
import com.fengdu.gas.common.jwt.LoginUserDTO;
|
import com.fengdu.gas.common.util.ParameterUtil;
|
import com.fengdu.gas.common.validator.ParameterValidateResult;
|
import com.fengdu.gas.common.validator.ParameterValidator;
|
import com.fengdu.gas.entity.enums.EState;
|
import com.fengdu.gas.entity.request.ReqListId;
|
import com.fengdu.gas.entity.request.ReqSetSort;
|
import com.fengdu.gas.entity.request.notice.ReqCreateNotice;
|
import com.fengdu.gas.entity.request.notice.ReqModifyNotice;
|
import com.fengdu.gas.entity.search.SearchNotice;
|
import com.fengdu.gas.service.NoticeService;
|
import com.fengdu.gas.service.dto.NoticeDetail;
|
import com.fengdu.gas.host.BasicController;
|
import com.fengdu.gas.host.api.NonLogin;
|
import com.fengdu.gas.repository.vo.NoticeVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
|
/**
|
* 02.公告相关接口
|
* @author lin.liu
|
* @order 02
|
*/
|
@RestController
|
@RequestMapping(value = "notice")
|
public class NoticeController extends BasicController {
|
@Autowired
|
private NoticeService service;
|
/**
|
* 创建公告
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "create")
|
public ExecutedResult<Long> create(@RequestBody ReqCreateNotice request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("标题"), request.getTitle())
|
// 限制最大长度
|
.addLengthMax(ParameterUtil.named("标题"), request.getTitle(), ConstantFactory.LENGTH_MAX50)
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("内容"), request.getContent())
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
LoginUserDTO user = super.getTokenUser();
|
return this.service.create(request, user);
|
}
|
|
/**
|
* 编辑公告
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "modify")
|
public ExecutedResult<String> modify(@RequestBody ReqModifyNotice request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 必须大于0
|
.addGreater(ParameterUtil.named("公告id"), request.getId(), 0L)
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("标题"), request.getTitle())
|
// 限制最大长度
|
.addLengthMax(ParameterUtil.named("标题"), request.getTitle(), ConstantFactory.LENGTH_MAX50)
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("内容"), request.getContent())
|
// 必须是枚举值
|
.addMustEnum(ParameterUtil.named("状态"), request.getStatus(), EState.class)
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.modify(request);
|
}
|
|
/**
|
* 获取公告
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@GetMapping(value = "get/{id}")
|
public ExecutedResult<NoticeDetail> get(@PathVariable Long id) {
|
return this.service.get(id);
|
}
|
|
/**
|
* 根据id批量获取公告
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "getList")
|
public ExecutedResult<List<NoticeVO>> getList(@RequestBody ReqListId request) {
|
return this.service.getList(request.getListId());
|
}
|
|
/**
|
* 公告设置排序值
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "setSort")
|
public ExecutedResult<String> setSort(@RequestBody ReqSetSort request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
.addGreater(ParameterUtil.named("公告id"), request.getId(), 0L)
|
.addGreaterThan(ParameterUtil.named("排序值"), request.getSort(), 0);
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.setSort(request);
|
}
|
|
/**
|
* 停用公告
|
*
|
* @param id 项目id
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "stop")
|
public ExecutedResult<String> stop(@RequestParam Long id) {
|
return this.service.changeStatus(id, EState.DISABLED);
|
}
|
|
/**
|
* 启用公告
|
*
|
* @param id 项目id
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "enable")
|
public ExecutedResult<String> enable(@RequestParam Long id) {
|
return this.service.changeStatus(id, EState.NORMAL);
|
}
|
|
/**
|
* 删除公告
|
*
|
* @param id 项目id
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@PostMapping(value = "remove")
|
public ExecutedResult<String> remove(@RequestParam Long id) {
|
return this.service.changeStatus(id, EState.DELETED);
|
}
|
|
/**
|
* 查询公告
|
*
|
* @author lin.liu
|
* @date 2023/02/26
|
*/
|
@NonLogin
|
@PostMapping(value = "search")
|
public ExecutedResult<PagerResult<NoticeVO>> search(@RequestBody SearchNotice request) {
|
return this.service.search(request);
|
}
|
}
|