luodangjia
2024-12-10 ee7ce5d1cbf80bee0a15c1e5bc5eaa30858d812b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;
 
/**
 * <p>
 * 景区管理 前端控制器
 * </p>
 *
 * @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<TScenicSpot> getDetailById(@RequestParam Long id) {
        return ApiResult.success(tScenicSpotService.getById(id));
    }
 
    @ApiOperation(value = "获取景区列表")
    @PostMapping("/list")
    public ApiResult put(@RequestBody SpotDto spotDto)
    {
 
        QueryWrapper<TScenicSpot> 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<TScenicSpot> pageInfo = new PageInfo<>(spotDto.getPageNum(), 1000);
        List<TScenicSpot> 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<TScenicSpot>() {
                    @Override
                    public int compare(TScenicSpot spot1, TScenicSpot spot2) {
                        return Double.compare(spot1.getDistance(), spot2.getDistance());
                    }
                });
            }else {
                Collections.sort(page, new Comparator<TScenicSpot>() {
                    @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<TScenicSpot> 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<TScenicSpot> pageInfo = new PageInfo<>(spotDto.getPageNum(), spotDto.getPageSize());
        PageInfo<TScenicSpot> page = tScenicSpotService.page(pageInfo,tScenicSpotQueryWrapper);
        return  ApiResult.success(page);
    }
 
 
}