|
|
@@ -0,0 +1,728 @@
|
|
|
+package org.dromara.external.controller.zhongche;
|
|
|
+
|
|
|
+import cn.hutool.core.codec.Base64;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+
|
|
|
+import cn.hutool.http.HttpRequest;
|
|
|
+import cn.hutool.http.HttpResponse;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+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.*;
|
|
|
+import org.dromara.external.api.zhongche.domain.bo.*;
|
|
|
+import org.dromara.external.api.zhongche.domain.invoice.bo.*;
|
|
|
+import org.dromara.external.api.zhongche.domain.invoice.vo.InvoiceApplyDetailVo;
|
|
|
+import org.dromara.external.api.zhongche.domain.invoice.vo.InvoiceApplyOrdersVo;
|
|
|
+import org.dromara.external.api.zhongche.domain.invoice.vo.InvoiceApplyWaitlistVo;
|
|
|
+import org.dromara.external.api.zhongche.domain.settlement.bo.*;
|
|
|
+import org.dromara.external.api.zhongche.domain.settlement.vo.SettlementApplyOrdersVo;
|
|
|
+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.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+
|
|
|
+/**
|
|
|
+ * author
|
|
|
+ * 时间:2026/1/5,19:03
|
|
|
+ */
|
|
|
+@Validated
|
|
|
+@RequiredArgsConstructor
|
|
|
+@RestController
|
|
|
+@RequestMapping("/api")
|
|
|
+public class ZhongChePullController {
|
|
|
+
|
|
|
+ // 中车地区查询接口地址(替换为真实域名)
|
|
|
+ private static final String AREA_QUERY_URL = "https://{中车域名}";
|
|
|
+
|
|
|
+ // 中车提供的配置(替换为真实值)
|
|
|
+ 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 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", "响应签名验证失败");
|
|
|
+ }
|
|
|
+ //解析业务响应参数
|
|
|
+ ZCR<AreaVo> zcr = parseZcResponse(responseDto, AreaVo.class);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Boolean verifyResponseSign(ZCR<String> responseDto) {
|
|
|
+ String sign = responseDto.getSign();
|
|
|
+ if (sign == null){
|
|
|
+ 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);
|
|
|
+
|
|
|
+ // 2. 构建 token 请求体
|
|
|
+ ZCTokenBo zcTokenBo = getZcTokenBo(dataBase64);
|
|
|
+ String requestJson = JSONUtil.toJsonStr(zcTokenBo);
|
|
|
+
|
|
|
+ // 3. HTTP POST
|
|
|
+ HttpResponse httpResponse = HttpRequest
|
|
|
+ .post(AREA_QUERY_URL + apiPath)
|
|
|
+ .charset(StandardCharsets.UTF_8)
|
|
|
+ .body(requestJson)
|
|
|
+ .timeout(60000)
|
|
|
+ .execute();
|
|
|
+
|
|
|
+ // 4. 响应体转 DTO
|
|
|
+ String responseBody = httpResponse.body();
|
|
|
+ ZCR<String> responseDto = JSONUtil.toBean(responseBody, ZCR.class);
|
|
|
+
|
|
|
+ // 5. 响应码校验
|
|
|
+ if (!"0".equals(responseDto.getRespCode())) {
|
|
|
+ return ZCR.fail(responseDto.getRespCode(), responseDto.getRespMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ return responseDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ZCTokenBo getZcTokenBo(String data) {
|
|
|
+ ZCTokenBo zcTokenBo = new ZCTokenBo();
|
|
|
+ zcTokenBo.setVersion(VERSION);
|
|
|
+ zcTokenBo.setTimestamp(DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss"));
|
|
|
+ zcTokenBo.setAccessToken(ACCESS_TOKEN);
|
|
|
+ zcTokenBo.setClientId(CLIENT_ID);
|
|
|
+ zcTokenBo.setData(data);
|
|
|
+ zcTokenBo.setSign("");
|
|
|
+ return zcTokenBo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //5.2 商品服务
|
|
|
+
|
|
|
+ //TODO 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", "响应签名验证失败");
|
|
|
+ }
|
|
|
+ //解析业务响应参数
|
|
|
+ ZCR<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
|
|
|
+ );
|
|
|
+
|
|
|
+ // JSON → VO
|
|
|
+ V vo = JSONUtil.toBean(respBizJson, voClass);
|
|
|
+
|
|
|
+ return ZCR.ok(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.2.3 商品上下架状态变更
|
|
|
+ @PostMapping("/egoods/status/update")
|
|
|
+ public ZCR<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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //5.3 订单服务
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ //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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.3.12 审核订单取消
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ OrderCancelAuditBo orderCancelAuditBo = new OrderCancelAuditBo();
|
|
|
+ //响应业务参数
|
|
|
+ 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //5.4 售后服务
|
|
|
+
|
|
|
+ //TODO 5.4.1 查询售后单详情
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ AfterSaleDetailBo afterSaleDetailBo = new AfterSaleDetailBo();
|
|
|
+ //响应业务参数
|
|
|
+ AfterSaleDetailVo afterSaleDetailVo = new AfterSaleDetailVo();
|
|
|
+ AfterSaleReason afterSaleReason = new AfterSaleReason();
|
|
|
+ AfterSaleGoods afterSaleGoods = new AfterSaleGoods();
|
|
|
+ AfterSalePick afterSalePick = new AfterSalePick();
|
|
|
+ ImageList imageList = new ImageList();
|
|
|
+ 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //5.7 开票服务
|
|
|
+
|
|
|
+ //TODO 5.7.1 查询开票信息
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceApplyDetailBo invoiceApplyDetailBo = new InvoiceApplyDetailBo();
|
|
|
+ //响应业务参数
|
|
|
+ InvoiceApplyDetailVo invoiceApplyDetailVo = new InvoiceApplyDetailVo();
|
|
|
+ InvoiceReceiver invoiceReceiver = new InvoiceReceiver();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.2 查询开票申请订单列表
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceApplyOrdersBo invoiceApplyOrdersBo = new InvoiceApplyOrdersBo();
|
|
|
+ //响应业务参数
|
|
|
+ InvoiceApplyOrdersVo invoiceApplyOrdersVo = new InvoiceApplyOrdersVo();
|
|
|
+ InvoiceOrder invoiceOrder = new InvoiceOrder();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.4 电商同步开票信息
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceSyncInvoiceInfosBo invoiceSyncInvoiceInfosBo = new InvoiceSyncInvoiceInfosBo();
|
|
|
+ InvoiceInfo invoiceInfo = new InvoiceInfo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.5 同步纸质发票邮寄信息
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceSyncWaybillBo invoiceSyncWaybillBo = new InvoiceSyncWaybillBo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.6 发票妥投通知
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceDeliveredNoticeBo invoiceDeliveredNoticeBo = new InvoiceDeliveredNoticeBo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.7 查询待开票申请单列表
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceApplyWaitlistBo invoiceApplyWaitListBo = new InvoiceApplyWaitlistBo();
|
|
|
+
|
|
|
+ //响应业务参数
|
|
|
+ WaitInvoiceApply waitInvoiceApply = new WaitInvoiceApply();
|
|
|
+ InvoiceApplyWaitlistVo invoiceApplyWaitlistVo = new InvoiceApplyWaitlistVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.8 电商同意退票
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceRefundAgreeBo invoiceRefundAgreeBo = new InvoiceRefundAgreeBo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.9 电商确认完成退票
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceRefundFinishBo invoiceRefundFinishBo = new InvoiceRefundFinishBo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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);
|
|
|
+ return zcr;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 5.7.10 电商拒绝退票申请
|
|
|
+ /*
|
|
|
+ //请求业务参数
|
|
|
+ InvoiceRefundRejectBo invoiceRefundRejectBo = new InvoiceRefundRejectBo();
|
|
|
+ //响应业务参数
|
|
|
+ GoodsUpdateVo goodsUpdateVo = new GoodsUpdateVo();
|
|
|
+ */
|
|
|
+ @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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //5.9 结算服务
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO 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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|