363 lines
13 KiB
Java
Raw Normal View History

2025-04-14 09:35:36 +08:00
package com.cdzy.ebikeoperate.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.cdzy.common.enums.Code;
import com.cdzy.common.model.JsonResult;
import com.cdzy.common.model.PageParam;
import com.cdzy.ebikeoperate.enums.EbikeRegionInOperation;
import com.cdzy.ebikeoperate.mapper.EbikeRegionoperationMapper;
2025-05-06 16:42:59 +08:00
import com.cdzy.ebikeoperate.mapper.EbikeSiteTypeMapper;
2025-04-14 09:35:36 +08:00
import com.cdzy.ebikeoperate.model.dto.request.ReqAuthorizeOperationDto;
2025-05-06 15:32:41 +08:00
import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeOperationRegionDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqSiteRegionDto;
2025-05-06 16:42:59 +08:00
import com.cdzy.ebikeoperate.model.dto.response.ResEbikeOperationRegionDto;
2025-05-06 16:27:24 +08:00
import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionInfoDto;
2025-05-06 15:32:41 +08:00
import com.cdzy.ebikeoperate.model.dto.response.ResOperationRegionInfo;
2025-04-14 09:35:36 +08:00
import com.cdzy.ebikeoperate.model.dto.response.ZoneDto;
2025-05-06 16:42:59 +08:00
import com.cdzy.ebikeoperate.model.pojo.*;
2025-04-14 09:35:36 +08:00
import com.cdzy.ebikeoperate.service.EbikeAdministrationZoneService;
2025-05-06 15:32:41 +08:00
import com.cdzy.ebikeoperate.service.EbikeOperationRegionService;
import com.cdzy.ebikeoperate.service.EbikeSiteRegionService;
2025-04-14 09:35:36 +08:00
import com.ebike.feign.clients.StaffFeignClient;
import com.ebike.feign.model.rsp.RspBikeInfo;
import com.ebike.feign.model.rsp.StaffFeign;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryMethods;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
2025-05-06 16:09:33 +08:00
import com.mybatisflex.core.util.StringUtil;
2025-04-14 09:35:36 +08:00
import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
2025-05-06 15:32:41 +08:00
import java.util.Objects;
2025-04-14 09:35:36 +08:00
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeAdministrationZoneTableDef.EBIKE_ADMINISTRATION_ZONE;
2025-05-06 15:32:41 +08:00
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeOperationRegionTableDef.EBIKE_OPERATION_REGION;
2025-05-06 16:09:33 +08:00
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSiteRegionTableDef.EBIKE_SITE_REGION;
2025-04-14 09:35:36 +08:00
/**
2025-05-06 15:32:41 +08:00
* 区域控制层
2025-04-14 09:35:36 +08:00
*
* @author attiya
* @since 2025-04-01
*/
@RestController
@RequestMapping("/ebikeRegion")
@Validated
public class EbikeRegionController {
@Resource
private EbikeAdministrationZoneService zoneService;
@Resource
private StaffFeignClient staffFeignClient;
@Resource
private EbikeRegionoperationMapper ebikeRegionoperationMapper;
2025-05-06 15:32:41 +08:00
@Resource
private EbikeOperationRegionService operationRegionService;
@Resource
private EbikeSiteRegionService siteRegionService;
2025-05-06 16:42:59 +08:00
@Resource
private EbikeSiteTypeMapper siteTypeMapper;
2025-04-14 09:35:36 +08:00
/**
* 添加运营区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("saveOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> saveOperation(@RequestBody @Validated ReqEbikeOperationRegionDto operationRegionDto) {
operationRegionService.createOperationRegion(operationRegionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 分页查询运营区
*
* @param pageParam 分页参数
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("pageOperation")
public JsonResult<?> pageOperation(@Validated PageParam pageParam,
2025-05-06 15:32:41 +08:00
@RequestParam(required = false, name = "simpleName") String simpleName,
@RequestParam(required = false, name = "regionName") String regionName,
@RequestParam(required = false, name = "inOperation") Integer inOperation) {
Page<EbikeOperationRegion> page = operationRegionService.pageOperationRegion(pageParam, simpleName, regionName, inOperation);
2025-04-14 09:35:36 +08:00
return JsonResult.success(page);
}
/**
* ID查询运营区信息
*
* @param regionId 区域id
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("getOperationById")
public JsonResult<?> getOperationById(@RequestParam(name = "regionId") Long regionId) {
2025-05-06 15:32:41 +08:00
ResOperationRegionInfo info = operationRegionService.operationRegionInfo(regionId);
return JsonResult.success(info);
2025-04-14 09:35:36 +08:00
}
/**
* 修改运营区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("updateOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> updateOperation(@RequestBody @Validated ReqEbikeOperationRegionDto operationRegionDto) {
operationRegionService.updateOperation(operationRegionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 删除运营区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("delOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> delOperation(@RequestBody @Validated ReqBatchRegionDto delRegionDto) {
operationRegionService.delOperation(delRegionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 获取运营状态列表
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("listOperationStatus")
public JsonResult<?> listOperationStatus() {
2025-05-06 15:32:41 +08:00
List<EbikeRegionoperation> list = ebikeRegionoperationMapper.selectAll();
2025-04-14 09:35:36 +08:00
return JsonResult.success(list);
}
/**
* 批量停止运营
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("stopOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> stopOperation(@RequestBody @Validated ReqBatchRegionDto batchRegionDto) {
UpdateChain.of(EbikeOperationRegion.class)
.set(EBIKE_OPERATION_REGION.IN_OPERATION, EbikeRegionInOperation.OUT)
.where(EBIKE_OPERATION_REGION.OPERATION_REGION_ID.in(batchRegionDto.getIds()))
2025-04-14 09:35:36 +08:00
.update();
return JsonResult.success();
}
/**
* 获取当前登录用户所有运营区
*/
@GetMapping("getOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> getOperation(@RequestParam(value = "zoneId", required = false) String zoneId) {
2025-05-06 16:42:59 +08:00
List<ResEbikeOperationRegionDto> list = operationRegionService.getOperation(zoneId);
2025-04-14 09:35:36 +08:00
return JsonResult.success(list);
}
2025-05-06 16:42:59 +08:00
/**
* 站点类型列表
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("siteType")
public JsonResult<?> siteType() {
List<EbikeSiteType> ebikeSiteTypes = siteTypeMapper.selectAll();
return JsonResult.success(ebikeSiteTypes);
}
2025-04-14 09:35:36 +08:00
/**
* 添加站点
*
* @param regionDto 创建区域参数
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("saveSite")
2025-05-06 15:32:41 +08:00
public JsonResult<?> saveSite(@RequestBody @Validated ReqSiteRegionDto regionDto) {
siteRegionService.createSiteRegion(regionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 分页查询站点
*
* @param pageParam 分页参数
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("pageSite")
2025-05-06 16:09:33 +08:00
public JsonResult<?> pageSite(@Validated PageParam pageParam, String zoneId, String siteName) {
QueryWrapper queryWrapper = QueryWrapper.create()
.leftJoin(EBIKE_OPERATION_REGION).on(EBIKE_OPERATION_REGION.OPERATION_REGION_ID.eq(EBIKE_SITE_REGION.OPERATION_REGION_ID))
.leftJoin(EBIKE_ADMINISTRATION_ZONE).on(EBIKE_ADMINISTRATION_ZONE.ID.eq(EBIKE_OPERATION_REGION.ZONE_ID))
.where(EBIKE_ADMINISTRATION_ZONE.ID.eq(zoneId,StringUtil.hasText(zoneId)))
.where(EBIKE_SITE_REGION.SITE_NAME.like(siteName, StringUtil.hasText(siteName)));
Page<EbikeSiteRegion> page = siteRegionService.page(pageParam.getPage(), queryWrapper);
return JsonResult.success(page);
2025-04-14 09:35:36 +08:00
}
2025-05-06 16:27:24 +08:00
/**
* 站点详情
*
* @param siteRegionId 站点ID
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("siteInfo")
public JsonResult<?> siteInfo(@NotNull(message = "站点ID不能为空") Long siteRegionId) {
ResEbikeSiteRegionInfoDto info = siteRegionService.siteInfo(siteRegionId);
return JsonResult.success(info);
}
2025-04-14 09:35:36 +08:00
/**
* 修改站点
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("updateSite")
2025-05-06 15:32:41 +08:00
public JsonResult<?> updateSite(@RequestBody @Validated ReqSiteRegionDto regionDto) {
siteRegionService.updateSiteRegion(regionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 批量删除站点
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@PostMapping("delSite")
2025-05-06 15:32:41 +08:00
public JsonResult<?> delSite(@RequestBody @Validated ReqBatchRegionDto delRegionDto) {
siteRegionService.delSite(delRegionDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 获取当前登录用户所有行政区
*/
@GetMapping("getZone")
2025-05-06 15:32:41 +08:00
public JsonResult<?> getZone() {
List<ZoneDto> zone = operationRegionService.listZoneByToken();
2025-04-14 09:35:36 +08:00
return JsonResult.success(zone);
}
/**
2025-05-06 15:32:41 +08:00
* 获取当前登录用户所有站点
2025-04-14 09:35:36 +08:00
*/
@GetMapping("getRegion")
2025-05-06 16:09:33 +08:00
public JsonResult<?> getRegion(@RequestParam(value = "regionId", required = false) Long regionId) {
2025-05-06 15:32:41 +08:00
List<EbikeSiteRegion> list = siteRegionService.listByToken(regionId);
2025-04-14 09:35:36 +08:00
return JsonResult.success(list);
}
/**
* 获取运营区内车辆
*/
@GetMapping("getOperationBike")
2025-05-06 15:32:41 +08:00
public JsonResult<?> getOperationBike(@RequestParam(value = "regionId") String regionId) {
List<RspBikeInfo> list = operationRegionService.getOperationBike(regionId);
2025-04-14 09:35:36 +08:00
return JsonResult.success(list);
}
/**
* 分页获取同运营商员工
*
* @param pageParam 分页参数
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("pageStaff")
public JsonResult<?> pageStaff(@Validated PageParam pageParam) {
String tokenValue = StpUtil.getTokenValue();
JsonResult<Page<StaffFeign>> result = staffFeignClient.getStaffsByLoginOrg(pageParam, tokenValue);
2025-05-06 15:32:41 +08:00
if (result.getCode() == Code.SUCCESS) {
2025-04-14 09:35:36 +08:00
return JsonResult.success(result.getData());
2025-05-06 15:32:41 +08:00
} else {
2025-04-14 09:35:36 +08:00
return JsonResult.failed(result.getMessage());
}
}
/**
* 获取省级行政区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("province")
public JsonResult<?> province() {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(QueryMethods.length(EBIKE_ADMINISTRATION_ZONE.ID).eq(2));
List<EbikeAdministrationZone> zones = zoneService.list(queryWrapper);
return JsonResult.success(zones);
}
/**
* 获取市级行政区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("city")
public JsonResult<?> city(@RequestParam("zoneId") @NotNull(message = "省级行政区ID不能为空") String zoneId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(QueryMethods.length(EBIKE_ADMINISTRATION_ZONE.ID).eq(4))
.where(EBIKE_ADMINISTRATION_ZONE.ID.likeLeft(zoneId));
List<EbikeAdministrationZone> zones = zoneService.list(queryWrapper);
return JsonResult.success(zones);
}
/**
* 获取区级行政区
*
* @return {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("zone")
public JsonResult<?> zone(@RequestParam("zoneId") @NotNull(message = "省级行政区ID不能为空") String zoneId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(QueryMethods.length(EBIKE_ADMINISTRATION_ZONE.ID).eq(6))
.where(EBIKE_ADMINISTRATION_ZONE.ID.likeLeft(zoneId));
List<EbikeAdministrationZone> zones = zoneService.list(queryWrapper);
return JsonResult.success(zones);
}
/**
* 获取行政区下所有运营区
*/
@GetMapping("getOperationByZone")
2025-05-06 15:32:41 +08:00
public JsonResult<?> getOperationByZone(@RequestParam(value = "zoneId", required = false) String zoneId) {
2025-04-14 09:35:36 +08:00
QueryWrapper queryWrapper = QueryWrapper.create()
2025-05-06 15:32:41 +08:00
.where(EBIKE_OPERATION_REGION.ZONE_ID.eq(zoneId, Objects::nonNull));
List<EbikeOperationRegion> list = operationRegionService.list(queryWrapper);
2025-04-14 09:35:36 +08:00
return JsonResult.success(list);
}
/**
* 批量授权运营区
*/
@PostMapping("authorizeOperation")
2025-05-06 15:32:41 +08:00
public JsonResult<?> authorizeOperation(@RequestBody @Validated ReqAuthorizeOperationDto authorizeOperationDto) {
operationRegionService.authorizeOperation(authorizeOperationDto);
2025-04-14 09:35:36 +08:00
return JsonResult.success();
}
/**
* 根据行政区名称获取运营区域ID列表
*
* @param zoneName 区域名称
* @return 详情
*/
@GetMapping("getRegionIdsByZone")
2025-05-06 15:32:41 +08:00
public JsonResult<?> getRegionIdsByZone(@RequestParam(name = "zoneName") String zoneName) {
List<Long> regions = operationRegionService.getRegionIdsByZone(zoneName);
if (regions == null) {
return JsonResult.failed("未查询到该行政区内的运营区域");
}
return JsonResult.success(regions);
}
2025-04-14 09:35:36 +08:00
}