package com.zsElectric.boot.business.controller; import cn.idev.excel.EasyExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zsElectric.boot.business.model.query.ThirdPartyStationInfoQuery; import com.zsElectric.boot.business.model.query.ThirdPartyEquipmentInfoQuery; import com.zsElectric.boot.business.model.dto.StationDetailDTO; import com.zsElectric.boot.business.model.dto.ThirdPartyEquipmentExportDTO; import com.zsElectric.boot.business.model.dto.ConnectorTipsUpdateDTO; import com.zsElectric.boot.business.model.vo.PartyStationInfoVO; import com.zsElectric.boot.business.model.vo.ThirdPartyStationInfoVO; import com.zsElectric.boot.business.model.vo.ThirdPartyEquipmentInfoVO; import com.zsElectric.boot.business.model.vo.StationDetailVO; import com.zsElectric.boot.business.service.ThirdPartyChargingService; import com.zsElectric.boot.common.annotation.Log; import com.zsElectric.boot.common.enums.LogModuleEnum; import com.zsElectric.boot.core.web.PageResult; import com.zsElectric.boot.core.web.Result; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; /** * 第三方充电站/充电桩信息查询控制器 * * @author system * @since 2025-12-11 */ @Tag(name = "第三方充电站/充电桩信息查询接口") @RestController @RequestMapping("/api/v1/third-party-charging") @RequiredArgsConstructor public class ThirdPartyChargingController { private final ThirdPartyChargingService chargingService; @Operation(summary = "充电站信息分页列表") @PostMapping("/stations/page") @Log(value = "充电站信息分页列表", module = LogModuleEnum.OTHER) public PageResult getStationInfoPage(@RequestBody ThirdPartyStationInfoQuery queryParams) { IPage result = chargingService.getStationInfoPage(queryParams); return PageResult.success(result); } @Operation(summary = "充电桩信息分页列表") @PostMapping("/equipments/page") @Log(value = "充电桩信息分页列表", module = LogModuleEnum.OTHER) public PageResult getEquipmentInfoPage(@RequestBody ThirdPartyEquipmentInfoQuery queryParams) { IPage result = chargingService.getEquipmentInfoPage(queryParams); return PageResult.success(result); } @Operation(summary = "查询站点详情信息", description = "查询站点的banner信息、提示语、营业时间、客服电话") @GetMapping("/stations/detail/{stationId}") @Log(value = "查询站点详情信息", module = LogModuleEnum.OTHER) public Result getStationDetail(@PathVariable Long stationId) { StationDetailVO result = chargingService.getStationDetail(stationId); return Result.success(result); } @Operation(summary = "修改站点详情信息", description = "修改站点的banner信息、提示语、营业时间、客服电话") @PostMapping("/stations/detail/update") @Log(value = "修改站点详情信息", module = LogModuleEnum.OTHER) public Result updateStationDetail(@Valid @RequestBody StationDetailDTO dto) { boolean result = chargingService.updateStationDetail(dto); return Result.success(result); } @Operation(summary = "导出充电桩信息") @GetMapping("/equipments/export") @Log(value = "导出充电桩信息", module = LogModuleEnum.OTHER) public void exportEquipments(ThirdPartyEquipmentInfoQuery queryParams, HttpServletResponse response) throws IOException { String fileName = "充电桩信息.xlsx"; response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8)); List exportList = chargingService.listExportEquipments(queryParams); EasyExcel.write(response.getOutputStream(), ThirdPartyEquipmentExportDTO.class).sheet("充电桩信息") .doWrite(exportList); } @Operation(summary = "修改充电桩提示语", description = "支持单个修改、批量修改、按站点一键修改") @PostMapping("/equipments/tips/update") @Log(value = "修改充电桩提示语", module = LogModuleEnum.OTHER) public Result updateConnectorTips(@Valid @RequestBody ConnectorTipsUpdateDTO dto) { int count = chargingService.updateConnectorTips(dto); return Result.success(count); } }