package com.lunhan.water.host.controller.base; import com.lunhan.water.common.ConstantFactory; import com.lunhan.water.common.ExecutedResult; import com.lunhan.water.common.PagerResult; import com.lunhan.water.common.jwt.LoginUserDTO; import com.lunhan.water.common.util.ParameterUtil; import com.lunhan.water.common.validator.ParameterValidateResult; import com.lunhan.water.common.validator.ParameterValidator; import com.lunhan.water.entity.enums.EState; import com.lunhan.water.entity.request.ReqListId; import com.lunhan.water.entity.request.ReqSetSort; import com.lunhan.water.entity.request.notice.ReqCreateNotice; import com.lunhan.water.entity.request.notice.ReqModifyNotice; import com.lunhan.water.entity.search.SearchNotice; import com.lunhan.water.host.BasicController; import com.lunhan.water.host.api.NonLogin; import com.lunhan.water.repository.vo.NoticeVO; import com.lunhan.water.service.NoticeService; import com.lunhan.water.service.dto.NoticeDetail; 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 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 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 get(@PathVariable Long id) { return this.service.get(id); } /** * 根据id批量获取公告 * * @author lin.liu * @date 2023/02/26 */ @PostMapping(value = "getList") public ExecutedResult> getList(@RequestBody ReqListId request) { return this.service.getList(request.getListId()); } /** * 公告设置排序值 * * @author lin.liu * @date 2023/02/26 */ @PostMapping(value = "setSort") public ExecutedResult 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 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 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 remove(@RequestParam Long id) { return this.service.changeStatus(id, EState.DELETED); } /** * 查询公告 * * @author lin.liu * @date 2023/02/26 */ @NonLogin @PostMapping(value = "search") public ExecutedResult> search(@RequestBody SearchNotice request) { return this.service.search(request); } }