2024.4.19

第三十三天

所花时间:2小时

代码量:200+

博客量:1

了解到的知识点:controller代码

package com.example.metroinfo.controller;

import com.example.metroinfo.model.MetroLine;
import com.example.metroinfo.model.MetroStation;
import com.example.metroinfo.model.MetroSystem;
import com.example.metroinfo.service.MetroInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/metro")
public class MetroSystemController {
    @Autowired
    MetroInfoService metroInfoService;
    @PostMapping
    ResponseEntity<?> addMetroSystem(@RequestBody MetroSystem metroSystem)  {
        return ResponseEntity.ok(metroInfoService.addMetroSystem(metroSystem));
    }
    @GetMapping("/{sid}")
    ResponseEntity<?> getMetroSystem(@PathVariable String sid) {
        return ResponseEntity.ok(metroInfoService.getMetroSystem(sid));
    }
    //功能实现接口
    @GetMapping("/find/system")//找城市
    ResponseEntity<?> findMetroSystemByName() {
        return ResponseEntity.ok(metroInfoService.findAllMetroSystem());
    }

    @GetMapping("/{sid}/find/station")//找站点
    ResponseEntity<?> findMetroStation(@PathVariable String sid, @RequestParam String stName) {
        return ResponseEntity.ok(metroInfoService.findStationByStationNameContaining(sid,stName));
    }
    @GetMapping("/{sid}/search/line")//找线路
    ResponseEntity<?> searchByLine(@PathVariable String sid,@RequestParam String lNum) {
        return ResponseEntity.ok(metroInfoService.searchByLine(sid,lNum));
    }

    @GetMapping("/{sid}/search/route")//找最优路线
    ResponseEntity<?> searchShortestPath(@PathVariable String sid, @RequestParam String from,@RequestParam String to) {
        return ResponseEntity.ok(metroInfoService.searchShortestPath(sid,from,to));
    }


    @GetMapping("/{systemName}/line/{lineNumber}/stations")//根据城市和线路名称找线路上所有站点
    public ResponseEntity<List<MetroStation>> getStationsBySystemAndLine(
            @PathVariable String systemName,
            @PathVariable String lineNumber) {
        List<MetroStation> stations = metroInfoService.getAllStationsBySystemCodeAndLineNumber(systemName, lineNumber);
        return ResponseEntity.ok(stations);
    }


    @GetMapping("/system/{systemName}/lines")
    public ResponseEntity<List<MetroLine>> getLinesBySystemName(@PathVariable String systemName) {
        List<MetroLine> lines = metroInfoService.getLinesBySystemName(systemName);
        if (lines.isEmpty()) {
            return ResponseEntity.notFound().build(); // 如果未找到任何线路,返回 404 Not Found
        }
        return ResponseEntity.ok(lines);
    }


    // 根据 systemName 查询对应的 systemCode
    @GetMapping("/findSystemCode")
    public ResponseEntity<String> findSystemCodeBySystemName(@RequestParam String systemName) {
        try {
            // 调用服务层方法,根据 systemName 查询对应的 MetroSystem 对象
            MetroSystem metroSystem = metroInfoService.findMetroSystemBySystemName(systemName);

            if (metroSystem != null) {
                // 如果找到对应的 MetroSystem,返回其 systemCode
                String systemCode = metroSystem.getSystemCode();
                return ResponseEntity.ok(systemCode);
            } else {
                // 如果找不到对应的 MetroSystem,返回 404 Not Found
                return ResponseEntity.notFound().build();
            }
        } catch (Exception e) {
            // 处理异常情况,比如数据库访问异常等
            e.printStackTrace();
            return ResponseEntity.status(500).body("Internal Server Error");
        }
    }


    @GetMapping("/findStationCode")
    public ResponseEntity<String> findStationCodeByStationName(@RequestParam String stationName) {
        try {
            // 调用服务层方法,根据 stationName 查询对应的 MetroStation 对象
            MetroStation metroStation = metroInfoService.findStationByStationName(stationName);

            if (metroStation != null) {
                // 如果找到对应的 MetroStation,返回其 stationCode
                String stationCode = metroStation.getStationCode();
                return ResponseEntity.ok(stationCode);
            } else {
                // 如果找不到对应的 MetroStation,返回 404 Not Found
                return ResponseEntity.notFound().build();
            }
        } catch (Exception e) {
            // 处理异常情况,比如数据库访问异常等
            e.printStackTrace();
            return ResponseEntity.status(500).body("Internal Server Error");
        }
    }





}

 

posted @ 2024-05-26 23:38  cvjj  阅读(6)  评论(0)    收藏  举报