| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package com.uas.eis.longcheer.controller;
- import com.uas.eis.longcheer.config.LongcheerConfig;
- import com.uas.eis.longcheer.dto.LongcheerResponse;
- import com.uas.eis.longcheer.entity.PoPushRequest;
- import com.uas.eis.longcheer.service.LongcheerService;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- /**
- * 龙旗接口对接控制器
- *
- * @author ZXL
- * @date 2026-06-26
- */
- @RestController
- @RequestMapping("/api/longcheer")
- public class LongcheerController {
- private static final Logger logger = LoggerFactory.getLogger(LongcheerController.class);
- @Resource
- private LongcheerService longcheerService;
- @Resource
- private LongcheerConfig longcheerConfig;
- /**
- * 接口01:供应商库存同步接口
- * 供应商 → 龙旗(本系统为推送方)
- *
- * @param master 账套标识
- * @param id 库存记录ID
- * @return 统一响应
- */
- @PostMapping("/inventory/push")
- public LongcheerResponse pushInventory(@RequestBody String master, Integer id) {
- try {
- LongcheerResponse response = longcheerService.pushInventory(master, id);
- logger.info("[龙旗接口]库存同步响应,code={},message={}", response.getCode(), response.getMessage());
- return response;
- } catch (Exception e) {
- logger.error("[龙旗接口]库存同步异常", e);
- return new LongcheerResponse(500, "库存同步失败:" + e.getMessage(), false);
- }
- }
- /**
- * 接口02:供应商采购订单同步接口
- * 龙旗 → 供应商(本系统为接收方)
- * 龙旗通过 x-app-key / x-app-secret 鉴权后推送采购订单数据到本接口
- *
- * @param appKey 请求头 x-app-key
- * @param appSecret 请求头 x-app-secret
- * @param request 龙旗推送的采购订单数据
- * @return 统一响应
- */
- @PostMapping("/po/push")
- public LongcheerResponse receivePo(
- @RequestHeader(value = "x-app-key", required = false) String appKey,
- @RequestHeader(value = "x-app-secret", required = false) String appSecret,
- @RequestBody PoPushRequest request) {
- // 鉴权验证:根据 elsAccount 动态获取配置的 appKey/appSecret
- String configAppKey = longcheerConfig.getPo().getAppKey();
- String configAppSecret = longcheerConfig.getPo().getAppSecret();
- java.util.Map<String, LongcheerConfig.Credential> poCredentials =
- longcheerConfig.getPo().getCredentials();
- if (poCredentials != null && request != null && !isBlank(request.getElsAccount())) {
- LongcheerConfig.Credential cred = poCredentials.get(request.getElsAccount().trim());
- if (cred != null) {
- configAppKey = cred.getAppKey();
- configAppSecret = cred.getAppSecret();
- logger.info("[龙旗接口]采购订单鉴权使用elsAccount={}对应凭证,appKey={}",
- request.getElsAccount().trim(), configAppKey);
- }
- }
- if (isBlank(appKey) || isBlank(appSecret)
- || !appKey.equals(configAppKey) || !appSecret.equals(configAppSecret)) {
- logger.warn("[龙旗接口]采购订单接收鉴权失败,appKey={},elsAccount={}", appKey,
- request == null ? null : request.getElsAccount());
- return new LongcheerResponse(401, "鉴权失败:x-app-key或x-app-secret不正确", false);
- }
- try {
- LongcheerResponse response = longcheerService.receivePo(request);
- logger.info("[龙旗接口]采购订单接收响应,erpOrderNumber={},code={},message={}",
- request == null ? null : request.getErpOrderNumber(), response.getCode(), response.getMessage());
- return response;
- } catch (Exception e) {
- logger.error("[龙旗接口]采购订单接收异常,erpOrderNumber={}",
- request == null ? null : request.getErpOrderNumber(), e);
- return new LongcheerResponse(500, "采购订单接收失败:" + e.getMessage(), false);
- }
- }
- /**
- * 判断字符串是否为空
- *
- * @param str 字符串
- * @return true 表示为空
- */
- private boolean isBlank(String str) {
- return str == null || str.trim().isEmpty();
- }
- }
|