package com.hollywood.applet.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hollywood.applet.dto.SpotDto;
import com.hollywood.applet.service.TScenicSpotService;
import com.hollywood.applet.utils.DistanceCalculator;
import com.hollywood.common.basic.ApiResult;
import com.hollywood.common.basic.PageInfo;
import com.hollywood.common.model.TInformation;
import com.hollywood.common.model.TScenicSpot;
import com.hollywood.common.model.TVideo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* 景区管理 前端控制器
*
*
* @author xiaochen
* @since 2024-02-29
*/
@RestController
@RequestMapping("/tScenicSpot")
@Api(tags = "景区")
public class TScenicSpotController {
@Autowired
private TScenicSpotService tScenicSpotService;
@ApiOperation(value = "查看景区管理详情")
@GetMapping(value = "/getDetailById")
public ApiResult getDetailById(@RequestParam Long id) {
return ApiResult.success(tScenicSpotService.getById(id));
}
@ApiOperation(value = "获取景区列表")
@PostMapping("/list")
public ApiResult put(@RequestBody SpotDto spotDto)
{
QueryWrapper tScenicSpotQueryWrapper = new QueryWrapper<>();
tScenicSpotQueryWrapper.eq("status",1);
if (spotDto.getName()!=null&&spotDto.getName()!=""){
tScenicSpotQueryWrapper.like("scenicName",spotDto.getName());
}
if (spotDto.getCityCode()!=null&&spotDto.getCityCode()!=""){
tScenicSpotQueryWrapper.eq("cityCode",spotDto.getCityCode());
}
tScenicSpotQueryWrapper.orderByDesc("sortBy");
PageInfo pageInfo = new PageInfo<>(spotDto.getPageNum(), 1000);
List page = tScenicSpotService.list(tScenicSpotQueryWrapper);
if (spotDto.getLat()!=null){
for (TScenicSpot tScenicSpot : page) {
double v = DistanceCalculator.calculateDistance(spotDto.getLat(), spotDto.getLon(), tScenicSpot.getLat(), tScenicSpot.getLon());
tScenicSpot.setDistance(v);
}
}
if (spotDto.getDistanceOrder()!=null){
if (spotDto.getDistanceOrder()==1) {
Collections.sort(page, new Comparator() {
@Override
public int compare(TScenicSpot spot1, TScenicSpot spot2) {
return Double.compare(spot1.getDistance(), spot2.getDistance());
}
});
}else {
Collections.sort(page, new Comparator() {
@Override
public int compare(TScenicSpot spot1, TScenicSpot spot2) {
return Double.compare(spot2.getDistance(), spot1.getDistance());
}
});
}
}
pageInfo.setRecords(page);
return ApiResult.success(pageInfo);
}
@ApiOperation(value = "推荐获取景区分页列表")
@PostMapping("/pagelist")
public ApiResult putList(@RequestBody SpotDto spotDto)
{
QueryWrapper tScenicSpotQueryWrapper = new QueryWrapper<>();
tScenicSpotQueryWrapper.eq("status",1);
if (spotDto.getName()!=null&&spotDto.getName()!=""){
tScenicSpotQueryWrapper.like("scenicName",spotDto.getName());
}
if (spotDto.getCityCode()!=null&&spotDto.getCityCode()!=""){
tScenicSpotQueryWrapper.eq("cityCode",spotDto.getCityCode());
}
tScenicSpotQueryWrapper.orderByDesc("sortBy");
PageInfo pageInfo = new PageInfo<>(spotDto.getPageNum(), spotDto.getPageSize());
PageInfo page = tScenicSpotService.page(pageInfo,tScenicSpotQueryWrapper);
return ApiResult.success(page);
}
}