/**
* Copyright (c) 2018 业主系统 All rights reserved.
*
* https://www.yezhu.io
*
* 版权所有,侵权必究!
*/
package com.kioor.room.controller;
import com.kioor.annotation.Login;
import com.kioor.common.constant.Constant;
import com.kioor.common.page.PageData;
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.room.dto.HousingEstateDTO;
import com.kioor.room.dto.BuildingInitDTO;
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.Date;
import java.util.List;
import java.util.Map;
/**
* 小区
*
* @author Mark sunlightcs@gmail.com
*/
@AllArgsConstructor
@RestController
@RequestMapping("/api/housingestate")
@Tag(name = "小区")
public class ApiHousingEstateController {
private final HousingEstateService housingEstateService;
@Login
@GetMapping("page")
@Operation(summary = "分页")
@Parameters({
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
@Parameter(name = Constant.ORDER_FIELD, description = "排序字段"),
@Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)"),
@Parameter(name = "name", description = "名称")
})
public Result> page(@Parameter(hidden = true) @RequestParam Map params) {
PageData page = housingEstateService.page(params);
return new Result>().ok(page);
}
@Login
@Operation(summary = "信息")
@GetMapping("{id}")
public Result info(@PathVariable("id") Long id) {
HousingEstateDTO housingEstate = housingEstateService.get(id);
return new Result().ok(housingEstate);
}
@Login
@PostMapping
@Operation(summary = "保存")
public Result save(@RequestBody HousingEstateDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dto.setCreateUser(userId);
dto.setCreateDate(new Date());
housingEstateService.save(dto);
return new Result();
}
@Login
@PutMapping
@Operation(summary = "修改")
public Result update(@RequestBody HousingEstateDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
housingEstateService.update(dto);
return new Result();
}
@Login
@DeleteMapping
@Operation(summary = "删除")
public Result delete(@RequestBody Long[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
housingEstateService.deleteBatchIds(Arrays.asList(ids));
return new Result();
}
@Login
@PostMapping("housingEstateInit")
@Operation(summary = "根据设置信息初始化小区房号")
public Result housingEstateInit(@RequestBody List buildingInitDTOList, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
//效验数据
ValidatorUtils.validateEntity(buildingInitDTOList, AddGroup.class, DefaultGroup.class);
//先清空房号
if(buildingInitDTOList.size() > 0){
buildingInitDTOList.forEach(buildingInitDTO -> {
housingEstateService.cleanAll(buildingInitDTO.getHousingEstateId());
});
}
housingEstateService.buildingInit(buildingInitDTOList);
return new Result();
}
@Login
@DeleteMapping("cleanAll")
@Operation(summary = "清空小区房号")
public Result cleanAll(@RequestBody Long housingEstateId) {
housingEstateService.cleanAll(housingEstateId);
return new Result();
}
}