/**
* Copyright (c) 2018 业主系统 All rights reserved.
*
* https://www.kioor.com
*
* 版权所有,侵权必究!
*/
package com.kioor.messageboard.controller;
import com.kioor.annotation.Login;
import com.kioor.common.exception.ErrorCode;
import com.kioor.common.utils.Result;
import com.kioor.common.validator.AssertUtils;
import com.kioor.common.validator.ValidatorUtils;
import com.kioor.common.validator.group.AddGroup;
import com.kioor.common.validator.group.DefaultGroup;
import com.kioor.common.validator.group.UpdateGroup;
import com.kioor.messageboard.dto.MessageBoardDTO;
import com.kioor.messageboard.service.MessageBoardService;
import com.kioor.room.enums.HousingEstateStatus;
import com.kioor.room.service.HousingEstateService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.Map;
/**
* 论坛
*
* @author Mark sunlightcs@gmail.com
*/
@AllArgsConstructor
@RestController
@RequestMapping("/client/messageboard")
@Tag(name = "论坛")
public class ApiMessageBoardController {
private final MessageBoardService messageBoardService;
private final HousingEstateService housingEstateService;
@Login
@GetMapping("infoByHousingEstate")
@Operation(summary = "根据小区查看论坛详情")
@Parameters({
@Parameter(name = "housingEstateId", description = "小区id",required = true)
})
public Result infoByHousingEstate(@Parameter(hidden = true) @RequestParam Map params) {
if(params.get("housingEstateId") == null){
return new Result().error("小区不能为空");
}
int status = housingEstateService.checkStatus(Long.parseLong(String.valueOf(params.get("housingEstateId"))));
if(status!=1) {
return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
}
MessageBoardDTO dto = messageBoardService.infoByHousingEstate(Long.parseLong(String.valueOf(params.get("housingEstateId"))));
return new Result().ok(dto);
}
@Login
@Operation(summary = "信息")
@GetMapping("{id}")
public Result info(@PathVariable("id") Long id) {
MessageBoardDTO messageBoardDTO = messageBoardService.get(id);
//校验小区状态
if(messageBoardDTO!=null){
int status = housingEstateService.checkStatus(messageBoardDTO.getHousingEstateId());
if(status!=1) {
return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
}
}
return new Result().ok(messageBoardDTO);
}
@Login
@PostMapping
@Operation(summary = "保存")
public Result save(@RequestBody MessageBoardDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
messageBoardService.save(dto);
return new Result();
}
@Login
@PutMapping
@Operation(summary = "修改")
public Result update(@RequestBody MessageBoardDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
messageBoardService.update(dto);
return new Result();
}
@Login
@DeleteMapping
@Operation(summary = "删除")
public Result delete(@RequestBody Long[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
messageBoardService.deleteBatchIds(Arrays.asList(ids));
return new Result();
}
}