AdminMerchantFundController.java 4.51 KB
package com.diligrp.rider.controller;

import com.diligrp.rider.common.exception.BizException;
import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.service.MerchantFundService;
import com.diligrp.rider.vo.*;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/admin/merchant/fund")
@RequiredArgsConstructor
public class AdminMerchantFundController {

    private final MerchantFundService merchantFundService;

    @GetMapping("/merchant-bills")
    public Result<PageResultVO<MerchantBillItemVO>> merchantBills(@RequestParam(required = false) Long cityId,
                                                                  @RequestParam(required = false) String keyword,
                                                                  @RequestParam String startDate,
                                                                  @RequestParam String endDate,
                                                                  @RequestParam(defaultValue = "1") int page,
                                                                  HttpServletRequest request) {
        return Result.success(merchantFundService.merchantBillList(resolveQueryCityId(request, cityId), keyword, startDate, endDate, page));
    }

    @GetMapping("/merchant-bill-detail")
    public Result<PageResultVO<MerchantBillDetailItemVO>> merchantBillDetail(@RequestParam(required = false) Long cityId,
                                                                              @RequestParam String outStoreId,
                                                                              @RequestParam String startDate,
                                                                              @RequestParam String endDate,
                                                                              @RequestParam(defaultValue = "1") int page,
                                                                              HttpServletRequest request) {
        return Result.success(merchantFundService.merchantBillDetail(resolveQueryCityId(request, cityId), outStoreId, startDate, endDate, page));
    }

    @GetMapping("/rider-bills")
    public Result<PageResultVO<RiderBillItemVO>> riderBills(@RequestParam(required = false) Long cityId,
                                                            @RequestParam(required = false) String keyword,
                                                            @RequestParam String startDate,
                                                            @RequestParam String endDate,
                                                            @RequestParam(defaultValue = "1") int page,
                                                            HttpServletRequest request) {
        return Result.success(merchantFundService.riderBillList(resolveQueryCityId(request, cityId), keyword, startDate, endDate, page));
    }

    @GetMapping("/rider-bill-detail")
    public Result<PageResultVO<RiderBillDetailItemVO>> riderBillDetail(@RequestParam(required = false) Long cityId,
                                                                       @RequestParam Long riderId,
                                                                       @RequestParam String startDate,
                                                                       @RequestParam String endDate,
                                                                       @RequestParam(defaultValue = "1") int page,
                                                                       HttpServletRequest request) {
        return Result.success(merchantFundService.riderBillDetail(resolveQueryCityId(request, cityId), riderId, startDate, endDate, page));
    }

    private Long resolveScopedCityId(HttpServletRequest request) {
        if (!"substation".equals(request.getAttribute("role"))) {
            return null;
        }
        Long cityId = (Long) request.getAttribute("cityId");
        if (cityId == null || cityId < 1) {
            throw new BizException("当前账号未绑定有效城市");
        }
        return cityId;
    }

    private Long resolveQueryCityId(HttpServletRequest request, Long queryCityId) {
        Long scopedCityId = resolveScopedCityId(request);
        return scopedCityId != null ? scopedCityId : queryCityId;
    }
}