|
|
@@ -3,10 +3,13 @@ package org.dromara.external.controller.zhongche;
|
|
|
import cn.hutool.core.codec.Base64;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.http.HttpRequest;
|
|
|
import cn.hutool.http.HttpResponse;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.external.api.zhongche.domain.*;
|
|
|
import org.dromara.external.api.zhongche.domain.aftersale.bo.*;
|
|
|
import org.dromara.external.api.zhongche.domain.aftersale.vo.*;
|
|
|
@@ -21,6 +24,9 @@ import org.dromara.external.api.zhongche.domain.settlement.vo.SettlementDetailVo
|
|
|
import org.dromara.external.api.zhongche.domain.settlement.vo.SettlementPaymentDetailVo;
|
|
|
import org.dromara.external.api.zhongche.domain.vo.*;
|
|
|
import org.dromara.external.util.SM2SignUtil;
|
|
|
+import org.dromara.external.util.SM2SignatureUtils;
|
|
|
+import org.dromara.external.util.SignParamUtils;
|
|
|
+import org.dromara.external.util.ZCApiUtils;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
@@ -28,11 +34,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 中车拉取接口
|
|
|
* 时间:2026/1/5,19:03
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Validated
|
|
|
@RequiredArgsConstructor
|
|
|
@RestController
|
|
|
@@ -40,278 +48,299 @@ import java.nio.charset.StandardCharsets;
|
|
|
public class ZhongChePullController {
|
|
|
|
|
|
// 中车地区查询接口地址(替换为真实域名)
|
|
|
- private static final String AREA_QUERY_URL = "https://{中车域名}";
|
|
|
-
|
|
|
+ private static final String AREA_QUERY_URL = "https://supply-test.crrcgo.cc/mallapi/";
|
|
|
// 中车提供的配置(替换为真实值)
|
|
|
- private static final String CLIENT_ID = "KFZiA6EknYf";
|
|
|
- private static final String ACCESS_TOKEN = "1261127442808451075";
|
|
|
- private static final String PRIVATE_KEY = "你的私钥(16进制)"; // 电商平台私钥
|
|
|
- private static final String ZC_PUBLIC_KEY = "中车公钥(16进制)"; // 中车公钥
|
|
|
- private static final String VERSION = "1.0";
|
|
|
+ private static final String CLIENT_ID = "KFZAVuIyC56";
|
|
|
+ private static final String PRIVATE_KEY = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgpQdXwMi21Mg1FhWad2AQLOwfNiDHgwhootau0YerQbagCgYIKoEcz1UBgi2hRANCAATVjJs6XRAMTZ72G6aWbgCAjfAnW0j5R9VFnHySTiF8+1mOisc3xOOr9w/Tu3hixzL5H2gVyLzHDRWkFtyeVqrX"; // 电商平台私钥
|
|
|
+ private static final String ZC_PUBLIC_KEY = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEmUrB5ByAeb8jHayC7vbddqBFDIEsf1cpNO1qJttZ17xlDagVB/tBFasPr/x0+OWf2kimTKah2NGCYarymD1R5Q==\n"; // 中车公钥
|
|
|
+ private static final String VERSION = "1.0.0";
|
|
|
|
|
|
- private final SM2SignUtil sm2SignUtil;
|
|
|
|
|
|
//5 中车电子商城提供服务
|
|
|
//5.1 基础数据服务
|
|
|
|
|
|
//5.1.1 地区查询
|
|
|
@PostMapping("/area/query")
|
|
|
- public ZCR<AreaVo> areaQuery(@RequestBody AreaQueryBo bo) {
|
|
|
- //获取response.body
|
|
|
- ZCR<String> responseDto = doZcPost("/api/area/query", bo);
|
|
|
- //TODO 2 签名校验
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
+ public AreaVo areaQuery(@RequestBody AreaQueryBo bo) {
|
|
|
+ // 1. 校验业务请求参数(自身先校验,避免无效调用电商平台)
|
|
|
+ //1 省级,2市级,3县级, 4区级
|
|
|
+ //父级地址id 当查询省级时填0
|
|
|
+ if (bo.getLevel() == null || !List.of(1, 2, 3, 4).contains(bo.getLevel())) {
|
|
|
+ throw new RuntimeException("级次(level)必填,且仅支持1/2/3/4");
|
|
|
}
|
|
|
- //解析业务响应参数
|
|
|
- ZCR<AreaVo> zcr = parseZcResponse(responseDto, AreaVo.class);
|
|
|
- return zcr;
|
|
|
+ if (StrUtil.isBlank(bo.getPid())) {
|
|
|
+ throw new RuntimeException("父级地址id(pid)不能为空");
|
|
|
+ }
|
|
|
+ //获取response.body
|
|
|
+ ZCR responseDto = doZcPost("/api/area/query", bo);
|
|
|
+ // 4. 复用工具类解析响应
|
|
|
+ return parseZcResponse(responseDto, AreaVo.class);
|
|
|
}
|
|
|
|
|
|
- private Boolean verifyResponseSign(ZCR<String> responseDto) {
|
|
|
- String sign = responseDto.getSign();
|
|
|
- if (sign == null){
|
|
|
+ private Boolean verifyResponseSign(ZCR responseDto) {
|
|
|
+ // 1. 空值防护
|
|
|
+ if (responseDto == null || responseDto.getSign() == null || responseDto.getSign().trim().isEmpty()) {
|
|
|
+ log.warn("通用签名校验 - 电商平台响应签名为空");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 2. 生成响应签名原文(复用 SignParamUtils.getSignContent,剔除 sign 字段)
|
|
|
+ String signContent = SignParamUtils.getSignContent(responseDto);
|
|
|
+
|
|
|
+ // 3. SM2 验签(复用 SM2SignatureUtils.verify,传入电商平台公钥)
|
|
|
+ return SM2SignatureUtils.verify(
|
|
|
+ signContent,
|
|
|
+ responseDto.getSign(),
|
|
|
+ ZC_PUBLIC_KEY
|
|
|
+ );
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("通用签名校验 - 校验响应签名异常", e);
|
|
|
return false;
|
|
|
}
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
|
|
|
- private <B> ZCR<String> doZcPost(String apiPath, B bo) {
|
|
|
- // 1. 业务参数 -> JSON -> Base64
|
|
|
- String bizJson = JSONUtil.toJsonStr(bo);
|
|
|
- String dataBase64 = Base64.encode(bizJson, StandardCharsets.UTF_8);
|
|
|
+ private <B> ZCR doZcPost(String apiPath, B bo) {
|
|
|
+ // 1.BO → JSON
|
|
|
+ String bizJson;
|
|
|
+ try {
|
|
|
+ bizJson = ZCApiUtils.objectToJson(bo);
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ return ZCR.fail("5000", "业务参数转换失败:" + e.getMessage());
|
|
|
+ }
|
|
|
|
|
|
- // 2. 构建 token 请求体
|
|
|
- ZCTokenBo zcTokenBo = getZcTokenBo(dataBase64);
|
|
|
- String requestJson = JSONUtil.toJsonStr(zcTokenBo);
|
|
|
+ // 2. JSON→ Base64
|
|
|
+ String dataBase64;
|
|
|
+ try {
|
|
|
+ // 注意:你的 ZCApiUtils.base64Encode 内部用 getBytes(),默认是系统编码,补充 UTF-8 编码保证一致性
|
|
|
+ dataBase64 = ZCApiUtils.base64Encode(bizJson);
|
|
|
+ } catch (IllegalArgumentException e) {
|
|
|
+ log.error("通用请求 - 业务 JSON Base64 编码失败", e);
|
|
|
+ return ZCR.fail("5000", "业务参数编码失败:" + e.getMessage());
|
|
|
+ }
|
|
|
|
|
|
- // 3. HTTP POST
|
|
|
+ //TODO 3. 构建 ZCTokenBo 请求体
|
|
|
+ ZCTokenBo zcTokenBo = getZcTokenBo(dataBase64);
|
|
|
+ // 4. 生成请求签名
|
|
|
+ String requestSign;
|
|
|
+ try {
|
|
|
+ requestSign = SignParamUtils.generateRequestSign(zcTokenBo, PRIVATE_KEY);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("通用请求 - 生成请求签名失败", e);
|
|
|
+ return ZCR.fail("5000", "生成请求签名失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+ zcTokenBo.setSign(requestSign);
|
|
|
+ // 5. ZCTokenBo → JSON 字符串
|
|
|
+ String requestJson;
|
|
|
+ try {
|
|
|
+ requestJson = ZCApiUtils.objectToJson(zcTokenBo);
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ log.error("通用请求 - ZCTokenBo 转换 JSON 失败", e);
|
|
|
+ return ZCR.fail("5000", "请求体转换失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 6. 发送 HTTP POST 请求(保持 hutool HTTP 工具,保证稳定性)
|
|
|
+ String fullUrl = AREA_QUERY_URL + apiPath;
|
|
|
HttpResponse httpResponse = HttpRequest
|
|
|
- .post(AREA_QUERY_URL + apiPath)
|
|
|
+ .post(fullUrl)
|
|
|
.charset(StandardCharsets.UTF_8)
|
|
|
+ .contentType("application/json")
|
|
|
.body(requestJson)
|
|
|
.timeout(60000)
|
|
|
.execute();
|
|
|
|
|
|
- // 4. 响应体转 DTO
|
|
|
+ // 7. 校验 HTTP 响应状态
|
|
|
+ if (!httpResponse.isOk()) {
|
|
|
+ log.error("通用请求 - 电商平台接口调用失败,接口路径:{},HTTP 状态码:{}", apiPath, httpResponse.getStatus());
|
|
|
+ return ZCR.fail("5000", "电商平台接口调用失败,HTTP 响应异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 8. 响应体 → ZCR(复用 ZCApiUtils 转换 JSON)
|
|
|
String responseBody = httpResponse.body();
|
|
|
- ZCR<String> responseDto = JSONUtil.toBean(responseBody, ZCR.class);
|
|
|
+ ZCR responseDto;
|
|
|
+ try {
|
|
|
+ responseDto = ZCApiUtils.jsonToObject(responseBody, ZCR.class);
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ log.error("通用请求 - 响应体转换 ZCR 失败", e);
|
|
|
+ return ZCR.fail("5000", "响应体解析失败:" + e.getMessage());
|
|
|
+ }
|
|
|
|
|
|
- // 5. 响应码校验
|
|
|
+ // 9. 响应码校验
|
|
|
if (!"0".equals(responseDto.getRespCode())) {
|
|
|
return ZCR.fail(responseDto.getRespCode(), responseDto.getRespMsg());
|
|
|
}
|
|
|
|
|
|
+ // 10. 响应签名校验(中车强要求)
|
|
|
+ if (!verifyResponseSign(responseDto)) {
|
|
|
+ log.error("通用请求 - 响应签名校验失败,apiPath={}", apiPath);
|
|
|
+ return ZCR.fail("5001", "响应签名验证失败");
|
|
|
+ }
|
|
|
+
|
|
|
return responseDto;
|
|
|
}
|
|
|
|
|
|
+ //TODO 怎么获取TOKEN
|
|
|
private ZCTokenBo getZcTokenBo(String data) {
|
|
|
ZCTokenBo zcTokenBo = new ZCTokenBo();
|
|
|
zcTokenBo.setVersion(VERSION);
|
|
|
zcTokenBo.setTimestamp(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss"));
|
|
|
- zcTokenBo.setAccessToken(ACCESS_TOKEN);
|
|
|
+ zcTokenBo.setAccessToken(null);
|
|
|
zcTokenBo.setClientId(CLIENT_ID);
|
|
|
zcTokenBo.setData(data);
|
|
|
- zcTokenBo.setSign("");
|
|
|
+ zcTokenBo.setSign(null);
|
|
|
return zcTokenBo;
|
|
|
}
|
|
|
|
|
|
|
|
|
- //5.2 商品服务
|
|
|
-
|
|
|
- //TODO 5.2.1 商品导入
|
|
|
+ //5.2.1 商品导入
|
|
|
@PostMapping("/egoods/import")
|
|
|
- public ZCR<GoodsImportVo> egoodsImport(@RequestBody GoodsImportBo bo) {
|
|
|
-
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/import", bo);
|
|
|
- //TODO 6.2 签名校验
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
+ public GoodsImportVo egoodsImport(@RequestBody GoodsImportBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/import", bo);
|
|
|
//解析业务响应参数
|
|
|
- ZCR<GoodsImportVo> zcr = parseZcResponse(responseDto, GoodsImportVo.class);
|
|
|
+ GoodsImportVo zcr = parseZcResponse(responseDto, GoodsImportVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
}
|
|
|
- private <V> ZCR<V> parseZcResponse(ZCR<String> responseDto, Class<V> voClass) {
|
|
|
- // Base64 解码 data
|
|
|
- String respBizJson = Base64.decodeStr(
|
|
|
- responseDto.getData(),
|
|
|
- StandardCharsets.UTF_8
|
|
|
- );
|
|
|
+ private <V> V parseZcResponse(ZCR responseDto, Class<V> voClass) {
|
|
|
+ // 1. 基础校验
|
|
|
+ if (responseDto == null) {
|
|
|
+ throw new RuntimeException("中车响应为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!"0".equals(responseDto.getRespCode())) {
|
|
|
+ throw new RuntimeException(
|
|
|
+ "中车接口返回失败:" + responseDto.getRespCode() + " - " + responseDto.getRespMsg()
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(responseDto.getData())) {
|
|
|
+ throw new RuntimeException("中车响应 data 为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 2. Base64 → JSON
|
|
|
+ String bizJson = ZCApiUtils.base64Decode(responseDto.getData());
|
|
|
|
|
|
- // JSON → VO
|
|
|
- V vo = JSONUtil.toBean(respBizJson, voClass);
|
|
|
+ // 3. JSON → VO(Jackson 自动处理嵌套对象 / List)
|
|
|
+ return ZCApiUtils.jsonToObject(bizJson, voClass);
|
|
|
|
|
|
- return ZCR.ok(vo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("解析中车响应失败,response={}", responseDto, e);
|
|
|
+ throw new RuntimeException("解析中车响应失败", e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
//TODO 5.2.2 商品价格变更
|
|
|
@PostMapping("/egoods/price/update")
|
|
|
- public ZCR<GoodsPriceUpdateVo> egoodsPriceUpdate(@RequestBody GoodsImportBo bo) {
|
|
|
-
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/price/update", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsPriceUpdateVo> zcr = parseZcResponse(responseDto, GoodsPriceUpdateVo.class);
|
|
|
+ public GoodsPriceUpdateVo egoodsPriceUpdate(@RequestBody GoodsImportBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/price/update", bo);
|
|
|
+ GoodsPriceUpdateVo zcr = parseZcResponse(responseDto, GoodsPriceUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.2.3 商品上下架状态变更
|
|
|
@PostMapping("/egoods/status/update")
|
|
|
- public ZCR<GoodsStatusUpdateVo> egoodsStatusUpdate(@RequestBody GoodsStatusUpdateBo bo) {
|
|
|
+ public GoodsStatusUpdateVo egoodsStatusUpdate(@RequestBody GoodsStatusUpdateBo bo) {
|
|
|
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/status/update", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsStatusUpdateVo> zcr = parseZcResponse(responseDto, GoodsStatusUpdateVo.class);
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/status/update", bo);
|
|
|
+ GoodsStatusUpdateVo zcr = parseZcResponse(responseDto, GoodsStatusUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.2.4 商品图片变更
|
|
|
@PostMapping("/egoods/imgs/update")
|
|
|
- public ZCR<GoodsImageUpdateVo> egoodsImgsUpdate(@RequestBody GoodsImageUpdateBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/imgs/update", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsImageUpdateVo> zcr = parseZcResponse(responseDto, GoodsImageUpdateVo.class);
|
|
|
+ public GoodsImageUpdateVo egoodsImgsUpdate(@RequestBody GoodsImageUpdateBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/imgs/update", bo);
|
|
|
+ GoodsImageUpdateVo zcr = parseZcResponse(responseDto, GoodsImageUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.2.5 商品规格信息变更
|
|
|
@PostMapping("/egoods/properties/update")
|
|
|
- public ZCR<GoodsUpdateVo> egoodsPropertiesUpdate(@RequestBody GoodsPropertiesUpdateBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/properties/update", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo egoodsPropertiesUpdate(@RequestBody GoodsPropertiesUpdateBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/properties/update", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.2.6 商品详情信息变更
|
|
|
@PostMapping("/egoods/detail/update")
|
|
|
- public ZCR<GoodsUpdateVo> egoodsDetailUpdate(@RequestBody GoodsDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/egoods/detail/update", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo egoodsDetailUpdate(@RequestBody GoodsDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/egoods/detail/update", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//5.3 订单服务
|
|
|
|
|
|
- //TODO 5.3.1 查询订单详情
|
|
|
+ // 5.3.1 查询订单详情
|
|
|
@PostMapping("/mall/order/detail")
|
|
|
- public ZCR<OrderDetailVo> mallOrderDetail(@RequestBody OrderDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/detail", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<OrderDetailVo> zcr = parseZcResponse(responseDto, OrderDetailVo.class);
|
|
|
- return zcr;
|
|
|
+ public OrderDetailVo mallOrderDetail(@RequestBody OrderDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/detail", bo);
|
|
|
+ OrderDetailVo orderDetailVo = parseZcResponse(responseDto, OrderDetailVo.class);
|
|
|
+ return orderDetailVo;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.2 接单
|
|
|
@PostMapping("/mall/order/confirm")
|
|
|
- public ZCR<GoodsUpdateVo> mallOrderConfirm(@RequestBody OrderConfirmBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/confirm", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallOrderConfirm(@RequestBody OrderConfirmBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/confirm", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.3 同步商品协商发货时间
|
|
|
@PostMapping("/mall/order/goods/append")
|
|
|
- public ZCR<GoodsUpdateVo> mallOrderGoodsAppend(@RequestBody OrderGoodsAppendBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/goods/append", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallOrderGoodsAppend(@RequestBody OrderGoodsAppendBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/goods/append", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.4 拒单
|
|
|
@PostMapping("/mall/order/reject")
|
|
|
- public ZCR<GoodsUpdateVo> mallOrderReject(@RequestBody OrderRejectBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/reject", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallOrderReject(@RequestBody OrderRejectBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/reject", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.5 发货
|
|
|
@PostMapping("/mall/order/deliver/goods")
|
|
|
- public ZCR<OrderDeliverVo> mallOrderDeliverGoods(@RequestBody OrderDeliverBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/deliver/goods", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<OrderDeliverVo> zcr = parseZcResponse(responseDto, OrderDeliverVo.class);
|
|
|
+ public ZhongCheOrderDeliverVo mallOrderDeliverGoods(@RequestBody ZhongCheOrderDeliverBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/deliver/goods", bo);
|
|
|
+
|
|
|
+ ZhongCheOrderDeliverVo zcr = parseZcResponse(responseDto, ZhongCheOrderDeliverVo.class);
|
|
|
return zcr;
|
|
|
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.6 查询待处理订单列表
|
|
|
@PostMapping("/mall/order/pending/list")
|
|
|
- public ZCR<PendingOrderListVo> mallOrderPendingList(@RequestBody ZCTokenBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/pending/list", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<PendingOrderListVo> zcr = parseZcResponse(responseDto, PendingOrderListVo.class);
|
|
|
+ public PendingOrderListVo mallOrderPendingList(@RequestBody ZCTokenBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/pending/list", bo);
|
|
|
+ PendingOrderListVo zcr = parseZcResponse(responseDto, PendingOrderListVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.7 妥投通知
|
|
|
@PostMapping("/mall/order/delivered/notice")
|
|
|
- public ZCR<GoodsUpdateVo> mallOrderDeliveredNotice(@RequestBody OrderDeliveredNoticeBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/delivered/notice", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallOrderDeliveredNotice(@RequestBody OrderDeliveredNoticeBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/delivered/notice", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.3.8 查询发货单信息
|
|
|
@PostMapping("/mall/order/query/outgoing")
|
|
|
- public ZCR<OutgoingVo> mallOrderQueryOutgoing(@RequestBody OutgoingQueryBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/query/outgoing", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<OutgoingVo> zcr = parseZcResponse(responseDto, OutgoingVo.class);
|
|
|
+ public OutgoingVo mallOrderQueryOutgoing(@RequestBody OutgoingQueryBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/query/outgoing", bo);
|
|
|
+ OutgoingVo zcr = parseZcResponse(responseDto, OutgoingVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.3.12 审核订单取消
|
|
|
+ //TODO 5.3.11 审核订单取消
|
|
|
/*
|
|
|
//请求业务参数
|
|
|
OrderCancelAuditBo orderCancelAuditBo = new OrderCancelAuditBo();
|
|
|
@@ -319,21 +348,12 @@ public class ZhongChePullController {
|
|
|
GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
*/
|
|
|
@PostMapping("/mall/order/cancel/audit/judge")
|
|
|
- public ZCR<GoodsUpdateVo> mallOrderCancelAuditJudge(@RequestBody OrderCancelAuditBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/order/cancel/audit/judge", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallOrderCancelAuditJudge(@RequestBody OrderCancelAuditBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/order/cancel/audit/judge", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //5.4 售后服务
|
|
|
-
|
|
|
- //TODO 5.4.1 查询售后单详情
|
|
|
+ //5.4.1 查询售后单详情
|
|
|
/*
|
|
|
//请求业务参数
|
|
|
AfterSaleDetailBo afterSaleDetailBo = new AfterSaleDetailBo();
|
|
|
@@ -346,383 +366,201 @@ public class ZhongChePullController {
|
|
|
AfterSaleReturn afterSaleReturn = new AfterSaleReturn();
|
|
|
*/
|
|
|
@PostMapping("/mall/aftersale/detail")
|
|
|
- public ZCR<AfterSaleDetailVo> mallAftersaleDetail(@RequestBody AfterSaleDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/detail", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<AfterSaleDetailVo> zcr = parseZcResponse(responseDto, AfterSaleDetailVo.class);
|
|
|
+ public AfterSaleDetailVo mallAftersaleDetail(@RequestBody AfterSaleDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/detail", bo);
|
|
|
+ AfterSaleDetailVo zcr = parseZcResponse(responseDto, AfterSaleDetailVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.2 接受售后
|
|
|
+ //5.4.2 接受售后
|
|
|
@PostMapping("/mall/aftersale/confirm")
|
|
|
- public ZCR<GoodsUpdateVo> mallAftersaleConfirm(@RequestBody AfterSaleConfirmBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/confirm", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallAftersaleConfirm(@RequestBody AfterSaleConfirmBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/confirm", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.3 拒绝售后
|
|
|
+ //5.4.3 拒绝售后
|
|
|
@PostMapping("/mall/aftersale/reject")
|
|
|
- public ZCR<GoodsUpdateVo> mallAftersaleReject(@RequestBody AfterSaleRejectBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/reject", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallAftersaleReject(@RequestBody AfterSaleRejectBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/reject", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.4 确认收到退货
|
|
|
+ //5.4.4 确认收到退货
|
|
|
@PostMapping("/mall/aftersale/return/goods/received")
|
|
|
- public ZCR<GoodsUpdateVo> mallAftersaleReturnGoodsReceived(@RequestBody AfterSaleReturnReceivedBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/return/goods/received", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallAftersaleReturnGoodsReceived(@RequestBody AfterSaleReturnReceivedBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/return/goods/received", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.5 换货新品发货
|
|
|
+ //5.4.5 换货新品发货
|
|
|
@PostMapping("/mall/aftersale/deliver/goods")
|
|
|
- public ZCR<AfterSaleDeliverGoodsVo> mallAftersaleDeliverGoods(@RequestBody AfterSaleDeliverGoodsBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/deliver/goods", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<AfterSaleDeliverGoodsVo> zcr = parseZcResponse(responseDto, AfterSaleDeliverGoodsVo.class);
|
|
|
+ public AfterSaleDeliverGoodsVo mallAftersaleDeliverGoods(@RequestBody AfterSaleDeliverGoodsBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/deliver/goods", bo);
|
|
|
+ AfterSaleDeliverGoodsVo zcr = parseZcResponse(responseDto, AfterSaleDeliverGoodsVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
//TODO 5.4.6 查询待处理售后单列表
|
|
|
@PostMapping("/mall/aftersale/pending/list")
|
|
|
- public ZCR<AfterSalePendingListVo> mallAftersalePendingList(@RequestBody AfterSalePendingListBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/pending/list", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<AfterSalePendingListVo> zcr = parseZcResponse(responseDto, AfterSalePendingListVo.class);
|
|
|
+ public AfterSalePendingListVo mallAftersalePendingList(@RequestBody AfterSalePendingListBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/pending/list", bo);
|
|
|
+ AfterSalePendingListVo zcr = parseZcResponse(responseDto, AfterSalePendingListVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.7 查询换货新品发货单信息
|
|
|
+ //5.4.7 查询换货新品发货单信息
|
|
|
@PostMapping("/mall/aftersale/query/outgoing")
|
|
|
- public ZCR<AfterSaleQueryOutgoingVo> mallAftersaleQueryOutgoing(@RequestBody AfterSaleQueryOutgoingBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/query/outgoing", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<AfterSaleQueryOutgoingVo> zcr = parseZcResponse(responseDto, AfterSaleQueryOutgoingVo.class);
|
|
|
+ public AfterSaleQueryOutgoingVo mallAftersaleQueryOutgoing(@RequestBody AfterSaleQueryOutgoingBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/query/outgoing", bo);
|
|
|
+ AfterSaleQueryOutgoingVo zcr = parseZcResponse(responseDto, AfterSaleQueryOutgoingVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.8 线下售后
|
|
|
+ //5.4.8 线下售后
|
|
|
@PostMapping("/mall/aftersale/offline/create")
|
|
|
- public ZCR<AfterSaleOfflineCreateVo> mallAftersaleOfflineCreate(@RequestBody AfterSaleOfflineCreateBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/offline/create", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<AfterSaleOfflineCreateVo> zcr = parseZcResponse(responseDto, AfterSaleOfflineCreateVo.class);
|
|
|
+ public AfterSaleOfflineCreateVo mallAftersaleOfflineCreate(@RequestBody AfterSaleOfflineCreateBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/offline/create", bo);
|
|
|
+ AfterSaleOfflineCreateVo zcr = parseZcResponse(responseDto, AfterSaleOfflineCreateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.4.9 确认退款
|
|
|
+ //5.4.9 确认退款
|
|
|
@PostMapping("/mall/aftersale/refund")
|
|
|
- public ZCR<GoodsUpdateVo> mallAftersaleRefund(@RequestBody AfterSaleRefundBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/aftersale/refund", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallAftersaleRefund(@RequestBody AfterSaleRefundBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/aftersale/refund", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //5.7 开票服务
|
|
|
|
|
|
- //TODO 5.7.1 查询开票信息
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceApplyDetailBo invoiceApplyDetailBo = new InvoiceApplyDetailBo();
|
|
|
- //响应业务参数
|
|
|
- InvoiceApplyDetailVo invoiceApplyDetailVo = new InvoiceApplyDetailVo();
|
|
|
- InvoiceReceiver invoiceReceiver = new InvoiceReceiver();
|
|
|
- */
|
|
|
+ //5.7.1 查询开票信息
|
|
|
@PostMapping("/mall/invoice/apply/detail")
|
|
|
- public ZCR<InvoiceApplyDetailVo> mallInvoiceApplyDetail(@RequestBody InvoiceApplyDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/apply/detail", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<InvoiceApplyDetailVo> zcr = parseZcResponse(responseDto, InvoiceApplyDetailVo.class);
|
|
|
+ public InvoiceApplyDetailVo mallInvoiceApplyDetail(@RequestBody InvoiceApplyDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/apply/detail", bo);
|
|
|
+ InvoiceApplyDetailVo zcr = parseZcResponse(responseDto, InvoiceApplyDetailVo.class);
|
|
|
return zcr;
|
|
|
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.2 查询开票申请订单列表
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceApplyOrdersBo invoiceApplyOrdersBo = new InvoiceApplyOrdersBo();
|
|
|
- //响应业务参数
|
|
|
- InvoiceApplyOrdersVo invoiceApplyOrdersVo = new InvoiceApplyOrdersVo();
|
|
|
- InvoiceOrder invoiceOrder = new InvoiceOrder();
|
|
|
- */
|
|
|
+ //5.7.2 查询开票申请订单列表
|
|
|
@PostMapping("/mall/invoice/apply/orders")
|
|
|
- public ZCR<InvoiceApplyOrdersVo> mallInvoiceApplyOrders(@RequestBody InvoiceApplyOrdersBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/apply/orders", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<InvoiceApplyOrdersVo> zcr = parseZcResponse(responseDto, InvoiceApplyOrdersVo.class);
|
|
|
+ public InvoiceApplyOrdersVo mallInvoiceApplyOrders(@RequestBody InvoiceApplyOrdersBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/apply/orders", bo);
|
|
|
+ InvoiceApplyOrdersVo zcr = parseZcResponse(responseDto, InvoiceApplyOrdersVo.class);
|
|
|
return zcr;
|
|
|
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.3 拒绝开票
|
|
|
-
|
|
|
+ //5.7.3 拒绝开票
|
|
|
@PostMapping("/mall/invoice/apply/reject")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceApplyReject(@RequestBody InvoiceApplyRejectBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/apply/reject", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceApplyReject(@RequestBody InvoiceApplyRejectBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/apply/reject", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.4 电商同步开票信息
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceSyncInvoiceInfosBo invoiceSyncInvoiceInfosBo = new InvoiceSyncInvoiceInfosBo();
|
|
|
- InvoiceInfo invoiceInfo = new InvoiceInfo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.4 电商同步开票信息
|
|
|
@PostMapping("/mall/invoice/sync/invoiceinfos")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceSyncInvoiceInfos(@RequestBody InvoiceSyncInvoiceInfosBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/sync/invoiceinfos", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceSyncInvoiceInfos(@RequestBody InvoiceSyncInvoiceInfosBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/sync/invoiceinfos", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.5 同步纸质发票邮寄信息
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceSyncWaybillBo invoiceSyncWaybillBo = new InvoiceSyncWaybillBo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.5 同步纸质发票邮寄信息
|
|
|
+
|
|
|
@PostMapping("/mall/invoice/sync/waybill")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceSyncWaybill(@RequestBody InvoiceSyncWaybillBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/sync/waybill", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceSyncWaybill(@RequestBody InvoiceSyncWaybillBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/sync/waybill", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.6 发票妥投通知
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceDeliveredNoticeBo invoiceDeliveredNoticeBo = new InvoiceDeliveredNoticeBo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.6 发票妥投通知
|
|
|
@PostMapping("/mall/invoice/delivered/notice")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceDeliveredNotice(@RequestBody InvoiceDeliveredNoticeBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/delivered/notice", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceDeliveredNotice(@RequestBody InvoiceDeliveredNoticeBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/delivered/notice", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.7 查询待开票申请单列表
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceApplyWaitlistBo invoiceApplyWaitListBo = new InvoiceApplyWaitlistBo();
|
|
|
-
|
|
|
- //响应业务参数
|
|
|
- WaitInvoiceApply waitInvoiceApply = new WaitInvoiceApply();
|
|
|
- InvoiceApplyWaitlistVo invoiceApplyWaitlistVo = new InvoiceApplyWaitlistVo();
|
|
|
- */
|
|
|
+ //5.7.7 查询待开票申请单列表
|
|
|
@PostMapping("/mall/invoice/apply/waitlist")
|
|
|
- public ZCR<InvoiceApplyWaitlistVo> mallInvoiceApplyWaitList(@RequestBody InvoiceApplyWaitlistBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/apply/waitlist", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<InvoiceApplyWaitlistVo> zcr = parseZcResponse(responseDto, InvoiceApplyWaitlistVo.class);
|
|
|
+ public InvoiceApplyWaitlistVo mallInvoiceApplyWaitList(@RequestBody InvoiceApplyWaitlistBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/apply/waitlist", bo);
|
|
|
+ InvoiceApplyWaitlistVo zcr = parseZcResponse(responseDto, InvoiceApplyWaitlistVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.8 电商同意退票
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceRefundAgreeBo invoiceRefundAgreeBo = new InvoiceRefundAgreeBo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.8 电商同意退票
|
|
|
@PostMapping("/mall/invoice/refund/agree")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceRefundAgree(@RequestBody InvoiceRefundAgreeBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/refund/agree", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceRefundAgree(@RequestBody InvoiceRefundAgreeBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/refund/agree", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.9 电商确认完成退票
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceRefundFinishBo invoiceRefundFinishBo = new InvoiceRefundFinishBo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.9 电商确认完成退票
|
|
|
+
|
|
|
@PostMapping("/mall/invoice/refund/finish")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceRefundFinish(@RequestBody InvoiceRefundFinishBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/refund/finish", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ public GoodsUpdateVo mallInvoiceRefundFinish(@RequestBody InvoiceRefundFinishBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/refund/finish", bo);
|
|
|
+ GoodsUpdateVo zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
return zcr;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //TODO 5.7.10 电商拒绝退票申请
|
|
|
- /*
|
|
|
- //请求业务参数
|
|
|
- InvoiceRefundRejectBo invoiceRefundRejectBo = new InvoiceRefundRejectBo();
|
|
|
- //响应业务参数
|
|
|
- GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
- */
|
|
|
+ //5.7.10 电商拒绝退票申请
|
|
|
@PostMapping("/mall/invoice/refund/reject")
|
|
|
- public ZCR<GoodsUpdateVo> mallInvoiceRefundReject(@RequestBody InvoiceRefundRejectBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/invoice/refund/reject", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
- return zcr;
|
|
|
-
|
|
|
+ public GoodsUpdateVo mallInvoiceRefundReject(@RequestBody InvoiceRefundRejectBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/invoice/refund/reject", bo);
|
|
|
+ GoodsUpdateVo goodsUpdateVo = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ return goodsUpdateVo;
|
|
|
}
|
|
|
|
|
|
- //5.9 结算服务
|
|
|
-
|
|
|
- //TODO 5.9.1 查询结算单详情
|
|
|
+ //5.9.1 查询结算单详情
|
|
|
@PostMapping("/mall/settlement/detail")
|
|
|
- public ZCR<SettlementDetailVo> mallSettlementDetail(@RequestBody SettlementDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/settlement/detail", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<SettlementDetailVo> zcr = parseZcResponse(responseDto, SettlementDetailVo.class);
|
|
|
- return zcr;
|
|
|
-
|
|
|
+ public SettlementDetailVo mallSettlementDetail(@RequestBody SettlementDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/settlement/detail", bo);
|
|
|
+ SettlementDetailVo settlementDetailVo = parseZcResponse(responseDto, SettlementDetailVo.class);
|
|
|
+ return settlementDetailVo;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.9.2 查询结算单订单列表
|
|
|
+ //5.9.2 查询结算单订单列表
|
|
|
@PostMapping("/mall/settlement/apply/orders")
|
|
|
- public ZCR<SettlementApplyOrdersVo> mallSettlementApplyOrders(@RequestBody SettlementApplyOrdersBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/settlement/apply/orders", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<SettlementApplyOrdersVo> zcr = parseZcResponse(responseDto, SettlementApplyOrdersVo.class);
|
|
|
- return zcr;
|
|
|
-
|
|
|
+ public SettlementApplyOrdersVo mallSettlementApplyOrders(@RequestBody SettlementApplyOrdersBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/settlement/apply/orders", bo);
|
|
|
+ SettlementApplyOrdersVo settlementApplyOrdersVo = parseZcResponse(responseDto, SettlementApplyOrdersVo.class);
|
|
|
+ return settlementApplyOrdersVo;
|
|
|
}
|
|
|
|
|
|
|
|
|
- //TODO 5.9.3 结算单确认结算
|
|
|
+ //5.9.3 结算单确认结算
|
|
|
@PostMapping("/mall/settlement/confirm")
|
|
|
- public ZCR<GoodsUpdateVo> mallSettlementConfirm(@RequestBody SettlementConfirmBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/settlement/confirm", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
- return zcr;
|
|
|
-
|
|
|
-
|
|
|
+ public GoodsUpdateVo mallSettlementConfirm(@RequestBody SettlementConfirmBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/settlement/confirm", bo);
|
|
|
+ GoodsUpdateVo goodsUpdateVo = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ return goodsUpdateVo;
|
|
|
}
|
|
|
|
|
|
- //TODO 5.9.4 结算单付款详情
|
|
|
+ //5.9.4 结算单付款详情
|
|
|
@PostMapping("/mall/settlement/payment/detail")
|
|
|
- public ZCR<SettlementPaymentDetailVo> mallSettlementPaymentDetail( @RequestBody SettlementPaymentDetailBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/settlement/payment/detail", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<SettlementPaymentDetailVo> zcr = parseZcResponse(responseDto, SettlementPaymentDetailVo.class);
|
|
|
- return zcr;
|
|
|
+ public SettlementPaymentDetailVo mallSettlementPaymentDetail( @RequestBody SettlementPaymentDetailBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/settlement/payment/detail", bo);
|
|
|
+ SettlementPaymentDetailVo settlementPaymentDetailVo = parseZcResponse(responseDto, SettlementPaymentDetailVo.class);
|
|
|
+ return settlementPaymentDetailVo;
|
|
|
|
|
|
}
|
|
|
|
|
|
- //TODO 5.9.5 结算单确认收款
|
|
|
+ //5.9.5 结算单确认收款
|
|
|
@PostMapping("/mall/settlement/confirm/payment")
|
|
|
- public ZCR<GoodsUpdateVo> mallSettlementConfirmPayment( @RequestBody SettlementConfirmPaymentBo bo) {
|
|
|
- ZCR<String> responseDto = doZcPost("/api/mall/settlement/confirm/payment", bo);
|
|
|
- Boolean aBoolean = verifyResponseSign(responseDto);
|
|
|
- if (!aBoolean){
|
|
|
- return ZCR.fail("5001", "响应签名验证失败");
|
|
|
- }
|
|
|
- ZCR<GoodsUpdateVo> zcr = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
- return zcr;
|
|
|
+ public GoodsUpdateVo mallSettlementConfirmPayment( @RequestBody SettlementConfirmPaymentBo bo) {
|
|
|
+ ZCR responseDto = doZcPost("/api/mall/settlement/confirm/payment", bo);
|
|
|
+ GoodsUpdateVo goodsUpdateVo = parseZcResponse(responseDto, GoodsUpdateVo.class);
|
|
|
+ return goodsUpdateVo;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|