OpenStoreController.java 1.9 KB
package com.diligrp.rider.controller;

import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.dto.MerchantStoreDTO;
import com.diligrp.rider.entity.MerchantStore;
import com.diligrp.rider.service.MerchantService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 开放平台:门店同步接口
 * 接入方用 AppKey 签名后调用,同步自己系统的门店数据到配送中台
 */
@RestController
@RequestMapping("/api/open/store")
@RequiredArgsConstructor
public class OpenStoreController {

    private final MerchantService merchantService;

    /**
     * 同步门店(新增或更新)
     * 以 appKey + outStoreId 为唯一键,存在则更新,不存在则新增
     * dto.outStoreId 必填
     */
    @PostMapping("/sync")
    public Result<MerchantStore> sync(
            @RequestBody MerchantStoreDTO dto,
            HttpServletRequest request) {
        String appKey = request.getHeader("X-App-Key");
        return Result.success(merchantService.syncStore(appKey, dto));
    }

    /**
     * 查询本应用下的门店列表
     */
    @GetMapping("/list")
    public Result<List<MerchantStore>> list(
            HttpServletRequest request,
            @RequestParam(required = false) Long cityId,
            @RequestParam(defaultValue = "1") int page) {
        String appKey = request.getHeader("X-App-Key");
        return Result.success(merchantService.storeList(cityId, null, page));
    }

    /**
     * 根据外部门店编号查询
     */
    @GetMapping("/getByOutStoreId")
    public Result<MerchantStore> getByOutStoreId(
            @RequestParam String outStoreId,
            HttpServletRequest request) {
        String appKey = request.getHeader("X-App-Key");
        return Result.success(merchantService.getByOutStoreId(appKey, outStoreId));
    }
}