package com.template.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.template.api.HousePriceAPI;
import com.template.model.dto.AlterDto;
import com.template.model.dto.AlterPriceDto;
import com.template.model.pojo.House;
import com.template.model.pojo.HousePrice;
import com.template.model.pojo.PermissionSetting;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.model.vo.AlterPriceRecordVo;
import com.template.model.vo.RoomTypeVo;
import com.template.services.HousePriceService;
import com.template.services.HouseService;
import com.template.services.PermissionSettingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2023-11-09
*/
@RestController
public class HousePriceController implements HousePriceAPI {
@Autowired
HouseService houseService;
@Autowired
PermissionSettingService permissionSettingService;
@Autowired
HousePriceService housePriceService;
@Override
public CommonResult roomType() {
List roomTypeList = houseService.roomType();
// 全日
ArrayList day = new ArrayList<>();
// 钟点
ArrayList hour = new ArrayList<>();
for (RoomTypeVo roomTypeVo : roomTypeList) {
String roomType = roomTypeVo.getRoomType();
if ("1".equals(roomType)) {
day.add(roomTypeVo);
} else {
hour.add(roomTypeVo);
}
}
HashMap> map = new HashMap<>();
map.put("day", day);
map.put("hour", hour);
return CommonResult.ok(map);
}
@Override
public CommonResult alterPrice(AlterPriceDto alterPriceDto) {
if (ObjectUtils.isEmpty(alterPriceDto) && ObjectUtils.isEmpty(alterPriceDto.getAdminId())) {
return CommonResult.fail();
}
int adminId = alterPriceDto.getAdminId();
PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String houseTypeManagement = permissionSetting.getHouseTypeManagement();
if (!"0".equals(houseTypeManagement) && !"4".equals(houseTypeManagement)) {
return CommonResult.fail("此账号暂无该权限");
}
ArrayList housePrices = new ArrayList<>();
// 获取改价内容
List list = alterPriceDto.getAlterDtoList();
for (AlterDto alterDto : list) {
int type = alterDto.getType();
String name = alterDto.getName();
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(House::getRoomType, type)
.eq(House::getRoomName, name);
House house = houseService.getOne(wrapper);
if (ObjectUtils.isNotEmpty(house)) {
BigDecimal roomPrice = house.getRoomPrice();
HousePrice housePrice = new HousePrice();
BigDecimal price = alterDto.getPrice();
// 改价后的价格
housePrice.setPrice(price);
// 原价
housePrice.setOriginalPrice(roomPrice);
// 房型id
housePrice.setHouseId(house.getId()+"");
// 设置日期
housePrice.setSetDate(alterDto.getDate());
housePrices.add(housePrice);
}
}
boolean b = housePriceService.saveBatch(housePrices);
if (b) {
return CommonResult.ok();
}
return CommonResult.fail();
}
@Override
public CommonResult alterPriceRecord(int adminId, String type, String houseName, String operatingTime, String priceTime, String operatingName,int page,int size) {
if (ObjectUtils.isEmpty(adminId)) {
return CommonResult.fail();
}
PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String houseTypeManagement = permissionSetting.getHouseTypeManagement();
if (!"0".equals(houseTypeManagement) && !"5".equals(houseTypeManagement)) {
return CommonResult.fail("此账号暂无该权限");
}
if (ObjectUtils.isEmpty(page) && page <= 0) {
page = 1;
}
if (ObjectUtils.isEmpty(size) && size <= 0) {
size = 10;
}
if (ObjectUtils.isNotEmpty(operatingTime)) {
if (operatingTime.split(",").length != 2) {
return CommonResult.fail("参数异常");
}
}
if (ObjectUtils.isNotEmpty(priceTime)) {
if (priceTime.split(",").length != 2) {
return CommonResult.fail("参数异常");
}
}
PageUtils voPageUtils=housePriceService.alterPriceRecord(type,houseName,operatingTime,priceTime,operatingName,page,size);
return CommonResult.ok(voPageUtils);
}
}