From ac1b83b356268f2dd33141393987741938a250d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AF=95=E5=BD=A6=E5=85=B5?= Date: Fri, 19 Dec 2025 14:26:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/ct/service/impl/CTServiceImpl.java | 135 ++++++++++++------ .../web/controller/api/APIController.java | 38 +++-- .../ruoyi/common/core/domain/CTResponse.java | 1 - 3 files changed, 119 insertions(+), 55 deletions(-) diff --git a/ct/src/main/java/com/ruoyi/ct/service/impl/CTServiceImpl.java b/ct/src/main/java/com/ruoyi/ct/service/impl/CTServiceImpl.java index 34c4b4b..59a2f7d 100644 --- a/ct/src/main/java/com/ruoyi/ct/service/impl/CTServiceImpl.java +++ b/ct/src/main/java/com/ruoyi/ct/service/impl/CTServiceImpl.java @@ -267,7 +267,7 @@ public class CTServiceImpl implements CTService { } /** - * 线上下单 + * 线上下单,新版 */ @Override public CTResponse saveOrder(String name, String idCard, String contactMobile, @@ -280,56 +280,101 @@ public class CTServiceImpl implements CTService { if (ObjectUtil.isNotNull(requestBody)) { log.error(sn+" ------------------检查接口登录状态完成-------------------"); requestBody.setInterfaceName("SaveOrder"); + Map spiParam = new HashMap<>(); + spiParam.put("name", name); + spiParam.put("idCard", idCard); + spiParam.put("contactMobile", contactMobile); + spiParam.put("installedAddress", installedAddress); + spiParam.put("saleId", saleId); + spiParam.put("storeId", storeId); + spiParam.put("personnelId", personnelId); + spiParam.put("province", province); + spiParam.put("city", city); + spiParam.put("county", county); + spiParam.put("serialNumber", serialNumber); + spiParam.put("number", number); + spiParam.put("logiRemark", logiRemark); + spiParam.put("pageUrl", pageUrl); + spiParam.put("remark", remark); + spiParam.put("installAddress", installAddress); + + requestBody.setEncryption(JSONUtil.toJsonStr(spiParam), publicKey); + + Map headers = new HashMap<>(); + headers.put("account", personnelId); + headers.put("business_model", "SSLExtInterface"); + headers.put("opt_tye", "2"); + headers.put("client_ip", ip); Map body = new HashMap<>(); - body.put("name", name); - body.put("idCard", idCard); - body.put("contactMobile", contactMobile); - body.put("installedAddress", installedAddress); - body.put("saleId", saleId); - body.put("storeId", storeId); - body.put("personnelId", personnelId); - body.put("province", province); - body.put("city", city); - body.put("county", county); - body.put("serialNumber", serialNumber); - body.put("number", number); - body.put("logiRemark", logiRemark); - body.put("pageUrl", pageUrl); - body.put("remark", remark); - body.put("installAddress", installAddress); -// body.put("ynumber2", ynumber2); -// body.put("images", images); - requestBody.setEncryption(JSONUtil.toJsonStr(body), publicKey); - log.error(sn+" 加密前数据:"+body); - log.error(sn+" 加密后数据:"+requestBody.toMap()); - HttpResponse httpResponse = HttpRequest.post(url) - .header("token", token) - .form(requestBody.toMap()) + body.put("spiParam", requestBody.toMap()); + body.put("headers", headers); + + + log.error(sn+" 加密后数据:"+body.toString()); +// log.error(sn+" 加密后数据:"+requestBody.toMap()); + String saveOrderUrl = String.format("%sdqServer/api_out/openapiEopHttps/v1/eop.SSLExtInterface/requestEop/", host); + log.error(sn+" 请求地址:"+saveOrderUrl); + HttpResponse httpResponse = HttpRequest.post(saveOrderUrl) + .header("token", token).header("Content-Type", "application/json") + .body(body.toString()) .execute(); -// log.error("body:"+httpResponse.body()); + + boolean checkOK = false; + if (httpResponse.isOk()) { - if (ObjectUtil.isNotNull(httpResponse.body()) && ObjectUtil.isNull(JSONUtil.toBean(httpResponse.body(), JSONObject.class).getStr("status"))) { - // 其他异常状态,如504等 - log.error(sn+" ------------------下单异常------------------- "); - log.error(sn+" 请求电信异常,状态码:"+httpResponse.getStatus()); - log.error(sn+" 返回:"+httpResponse.body()); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(AgentOrder::getSerialNumber, serialNumber); - lqw.last("limit 1"); - AgentOrderVo agentOrderVo = agentOrderMapper.selectVoOne(lqw); - AgentOrder agentOrder = new AgentOrder(); - agentOrder.setId(agentOrderVo.getId()); - agentOrder.setStatus("-2"); - agentOrder.setHasError(1); - agentOrderMapper.updateById(agentOrder); - log.error(sn+" --------------------------------------------"); - throw new CTNetException(); + if (ObjectUtil.isNotNull(httpResponse.body())) { + /** + * response body + * {resCode: "0000", "resMsg": "",resObj:{isSuccess:1, result:{exopData:{data:"xxx", status: "success"}}}} + */ + JSONObject resBody = JSONUtil.toBean(httpResponse.body(), JSONObject.class); + try { + if (ObjectUtil.equal(resBody.getStr("resCode"), "0000")) { + JSONObject resObj = resBody.getJSONObject("resBody"); + if (ObjectUtil.equal(resObj.getStr("isSuccess"), 1)) { + JSONObject result = resObj.getJSONObject("result"); + JSONObject eopData = result.getJSONObject("eopData"); + return JSONUtil.toBean(eopData, CTResponse.class); + } + } + // 其他异常状态,如504等 + log.error(sn+" ------------------下单异常0------------------- "); + log.error(sn+" 请求电信异常,状态码:"+httpResponse.getStatus()); + log.error(sn+" 返回:"+httpResponse.body()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(AgentOrder::getSerialNumber, serialNumber); + lqw.last("limit 1"); + AgentOrderVo agentOrderVo = agentOrderMapper.selectVoOne(lqw); + AgentOrder agentOrder = new AgentOrder(); + agentOrder.setId(agentOrderVo.getId()); + agentOrder.setStatus("-2"); + agentOrder.setHasError(1); + agentOrderMapper.updateById(agentOrder); + log.error(sn+" --------------------------------------------"); + throw new CTNetException(); + } catch (Exception e) { + // 其他异常状态,如504等 + log.error(sn+" ------------------下单异常1------------------- "); + log.error(sn+" 请求电信异常,状态码:"+httpResponse.getStatus()); + log.error(sn+" 返回:"+httpResponse.body()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(AgentOrder::getSerialNumber, serialNumber); + lqw.last("limit 1"); + AgentOrderVo agentOrderVo = agentOrderMapper.selectVoOne(lqw); + AgentOrder agentOrder = new AgentOrder(); + agentOrder.setId(agentOrderVo.getId()); + agentOrder.setStatus("-2"); + agentOrder.setHasError(1); + agentOrderMapper.updateById(agentOrder); + log.error(sn+" --------------------------------------------"); + throw new CTNetException(); + } + } - CTResponse response = JSONUtil.toBean(httpResponse.body(), CTResponse.class); - return response; + } else { // 返回的不是200,或者没有返回 - log.error(sn+" ------------------下单异常-------------------"); + log.error(sn+" ------------------下单异常2-------------------"); log.error(sn+" 请求电信异常,状态码:"+httpResponse.getStatus()); log.error(sn+" 返回:"+httpResponse.body()); log.error(sn+" --------------------------------------------"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/APIController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/APIController.java index 4687390..94af6fd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/APIController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/APIController.java @@ -3,9 +3,11 @@ package com.ruoyi.web.controller.api; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONObject; import com.ruoyi.common.core.domain.CTResponse; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.ct.domain.Bill; import com.ruoyi.ct.domain.vo.AgentOrderVo; @@ -19,12 +21,10 @@ import com.ruoyi.system.service.ISysOssService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.util.ArrayList; @@ -47,11 +47,31 @@ public class APIController { return R.ok(ctService.selectNumber(personnelId, saleId, page, pageSize)); } - @GetMapping("/saveOrder") - public R saveOrder() throws Exception { - CTResponse response = ctService.saveOrder("", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", ""); + @PostMapping("/saveOrder") + public R saveOrder(HttpServletRequest request, @RequestBody JSONObject body) throws Exception { + System.out.println("body = " + body); + String ip = StringUtils.blankToDefault(request.getHeader("x-real-ip"), request.getRemoteAddr()); + CTResponse response = ctService.saveOrder( + body.getStr("name"), + body.getStr("idCard"), + body.getStr("contactMobile"), + body.getStr("installedAddress"), + body.getStr("saleId"), + body.getStr("storeId"), + body.getStr("personnelId"), + body.getStr("province"), + body.getStr("city"), + body.getStr("county"), + body.getStr("serialNumber"), + body.getStr("number"), + body.getStr("logiRemark"), + body.getStr("pageUrl"), + body.getStr("remark"), + body.getStr("installAddress"), + body.getStr("ynumber2"), + body.getStr("images"), + body.getStr("sn"), + ip, true); return R.ok(response.getData()); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CTResponse.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CTResponse.java index 0fb196f..7325c30 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CTResponse.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CTResponse.java @@ -3,7 +3,6 @@ package com.ruoyi.common.core.domain; import cn.hutool.json.JSONObject; import lombok.Data; import lombok.NoArgsConstructor; -import netscape.javascript.JSObject; @Data @NoArgsConstructor