AdminRiderLevelController.java 2.6 KB
package com.diligrp.rider.controller;

import com.diligrp.rider.common.exception.BizException;
import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.dto.AdminRiderLevelSaveDTO;
import com.diligrp.rider.entity.RiderLevel;
import com.diligrp.rider.service.AdminRiderLevelService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/admin/rider/level")
@RequiredArgsConstructor
public class AdminRiderLevelController {

    private final AdminRiderLevelService adminRiderLevelService;

    @GetMapping("/list")
    public Result<List<RiderLevel>> list(@RequestParam(required = false) Long cityId, HttpServletRequest request) {
        return Result.success(adminRiderLevelService.list(resolveCityId(cityId, request)));
    }

    @PostMapping("/add")
    public Result<Void> add(@Valid @RequestBody AdminRiderLevelSaveDTO dto, HttpServletRequest request) {
        adminRiderLevelService.add(dto, resolveCityId(dto.getCityId(), request));
        return Result.success();
    }

    @PutMapping("/edit")
    public Result<Void> edit(@Valid @RequestBody AdminRiderLevelSaveDTO dto, HttpServletRequest request) {
        adminRiderLevelService.edit(dto, resolveCityId(dto.getCityId(), request));
        return Result.success();
    }

    @PostMapping("/setDefault")
    public Result<Void> setDefault(@RequestParam Long id,
                                   @RequestParam(required = false) Long cityId,
                                   HttpServletRequest request) {
        adminRiderLevelService.setDefault(id, resolveCityId(cityId, request));
        return Result.success();
    }

    @DeleteMapping("/del")
    public Result<Void> delete(@RequestParam Long id,
                               @RequestParam(required = false) Long cityId,
                               HttpServletRequest request) {
        adminRiderLevelService.delete(id, resolveCityId(cityId, request));
        return Result.success();
    }

    private Long resolveCityId(Long cityId, HttpServletRequest request) {
        if ("substation".equals(request.getAttribute("role"))) {
            Long requestCityId = (Long) request.getAttribute("cityId");
            if (requestCityId == null || requestCityId < 1) {
                throw new BizException("当前账号未绑定城市");
            }
            return requestCityId;
        }
        if (cityId == null || cityId < 1) {
            throw new BizException("城市不能为空");
        }
        return cityId;
    }
}