PlatformSubstationController.java 2.41 KB
package com.diligrp.rider.controller;

import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.dto.ChangePasswordDTO;
import com.diligrp.rider.entity.Substation;
import com.diligrp.rider.service.SubstationService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/platform/substation")
@RequiredArgsConstructor
public class PlatformSubstationController {

    private final SubstationService substationService;

    /** 分站管理员列表 */
    @GetMapping("/list")
    public Result<List<Substation>> list(@RequestParam(required = false) String keyword) {
        return Result.success(substationService.list(keyword));
    }

    /** 新增分站管理员 */
    @PostMapping("/add")
    public Result<Void> add(@RequestBody Substation substation) {
        substationService.add(substation);
        return Result.success();
    }

    /** 编辑分站管理员 */
    @PutMapping("/edit")
    public Result<Void> edit(@RequestBody Substation substation) {
        substationService.edit(substation);
        return Result.success();
    }

    /** 禁用 */
    @PostMapping("/ban")
    public Result<Void> ban(@RequestParam Long id) {
        substationService.ban(id);
        return Result.success();
    }

    /** 启用 */
    @PostMapping("/cancelBan")
    public Result<Void> cancelBan(@RequestParam Long id) {
        substationService.cancelBan(id);
        return Result.success();
    }

    /** 删除 */
    @DeleteMapping("/del")
    public Result<Void> del(@RequestParam Long id) {
        substationService.del(id);
        return Result.success();
    }

    /** 根据城市ID查分站管理员 */
    @GetMapping("/getByCity")
    public Result<Substation> getByCity(@RequestParam Long cityId) {
        return Result.success(substationService.getByCityId(cityId));
    }

    /**
     * 分站管理员修改自己的密码
     * 需要携带分站管理员 token(role=substation)
     */
    @PostMapping("/changePassword")
    public Result<Void> changePassword(
            @Valid @RequestBody ChangePasswordDTO dto,
            jakarta.servlet.http.HttpServletRequest request) {
        Long adminId = (Long) request.getAttribute("adminId");
        substationService.changePassword(adminId, dto.getOldPassword(), dto.getNewPassword());
        return Result.success();
    }
}