/** * Copyright (c) 2018 业主系统 All rights reserved. *

* https://www.kioor.com *

* 版权所有,侵权必究! */ package com.kioor.room.controller; import com.kioor.annotation.Login; import com.kioor.annotation.LoginUser; import com.kioor.common.constant.Constant; import com.kioor.common.exception.ErrorCode; 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.messageboard.dto.MessageBoardDTO; import com.kioor.messageboard.service.MessageBoardService; import com.kioor.room.dto.BuildingInitDTO; import com.kioor.room.dto.HousingEstateDTO; import com.kioor.room.enums.HousingEstateStatus; import com.kioor.room.service.HousingEstateService; import com.kioor.user.entity.UserEntity; 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("/client/housingestate") @Tag(name = "小区") public class ApiHousingEstateController { private final HousingEstateService housingEstateService; private final MessageBoardService messageBoardService; @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 = "status", description = "小区状态:0待审核,1审核通过,2审核不通过,3禁用"), @Parameter(name = "name", description = "名称") }) public Result> page(@Parameter(hidden = true) @RequestParam Map params) { //如果状态为空则查询已审核通过的小区 // params.putIfAbsent("status", 1); 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.setStatus(0); 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 @PutMapping("examine") @Operation(summary = "审核小区") @Parameters({ @Parameter(name = "housingEstateId", description = "小区id", required = true), @Parameter(name = "status", description = "小区状态:0待审核,1审核通过,2审核不通过,3禁用", required = true) }) public Result examine(@Parameter(hidden = true) @RequestParam Map params, @LoginUser UserEntity user) { //效验登录用户是否是管理员 if(!user.getMobile().equals("18582543217")){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"非法操作,请联系管理员审核"); } if(params.get("housingEstateId")==null||params.get("status")==null){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"参数非法"); } HousingEstateDTO housingEstate = housingEstateService.get(Long.parseLong(String.valueOf(params.get("housingEstateId")))); if(housingEstate==null){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"小区不存在"); } housingEstate.setStatus(Integer.parseInt(String.valueOf(params.get("status")))); housingEstateService.update(housingEstate); 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(!housingEstateService.checkBuildingList(buildingInitDTOList)){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"参数非法,不是同一小区的数据"); } //校验小区状态 if(!buildingInitDTOList.isEmpty()){ int status = housingEstateService.checkStatus(buildingInitDTOList.get(0).getHousingEstateId()); if(status!=1) { return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription()); } } //校验小区创建者和初始化的人是否是同一人 if(!housingEstateService.checkCreateUser(buildingInitDTOList.get(0).getHousingEstateId(),userId)){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"操作非法,该小区并非你创建"); } //校验小区是否已被初始化,如果已被初始化则不允许操作 if(!housingEstateService.checkInit(buildingInitDTOList.get(0).getHousingEstateId())){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"操作非法,小区已有数据,请联系管理员重置"); } HousingEstateDTO housingEstateDTO = housingEstateService.get(buildingInitDTOList.get(0).getHousingEstateId()); //先清空房号 if(!buildingInitDTOList.isEmpty()){ buildingInitDTOList.forEach(buildingInitDTO -> { housingEstateService.cleanAll(buildingInitDTO.getHousingEstateId()); //删除小区留言板 MessageBoardDTO messageBoardDTO = messageBoardService.infoByHousingEstate(buildingInitDTO.getHousingEstateId()); if(messageBoardDTO != null ){ messageBoardService.deleteById(messageBoardDTO.getId()); } }); } //更新小区初始化状态为1 housingEstateService.updateInitFlag(buildingInitDTOList.get(0).getHousingEstateId(),1); //初始化小区信息 housingEstateService.buildingInit(buildingInitDTOList); //初始化小区留言板 MessageBoardDTO messageBoardDTO = messageBoardService.infoByHousingEstate(buildingInitDTOList.get(0).getHousingEstateId()); if(messageBoardDTO == null ){ messageBoardDTO = new MessageBoardDTO(); messageBoardDTO.setHousingEstateId(buildingInitDTOList.get(0).getHousingEstateId()); messageBoardDTO.setName(housingEstateDTO==null?"小区留言板":housingEstateDTO.getName()+"-小区留言板"); messageBoardService.save(messageBoardDTO); } return new Result(); } @Login @DeleteMapping("cleanAll") @Operation(summary = "清空小区房号") @Parameters({ @Parameter(name = "housingEstateId", description = "小区id", required = true) }) public Result cleanAll(@Parameter(hidden = true) @RequestParam Map params) { if(params.get("housingEstateId")==null){ return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"参数非法"); } Long housingEstateId = Long.parseLong(String.valueOf(params.get("housingEstateId"))); housingEstateService.cleanAll(housingEstateId); //删除小区留言板 MessageBoardDTO messageBoardDTO = messageBoardService.infoByHousingEstate(housingEstateId); if(messageBoardDTO != null ){ messageBoardService.deleteById(messageBoardDTO.getId()); } //设置小区初始化状态为0 housingEstateService.updateInitFlag(housingEstateId,0); return new Result(); } }