增加新版本下单接口调用

This commit is contained in:
毕彦兵
2025-12-19 14:26:00 +08:00
parent ee3cfe3bcd
commit ac1b83b356
3 changed files with 119 additions and 55 deletions

View File

@@ -267,7 +267,7 @@ public class CTServiceImpl implements CTService {
}
/**
* 线上下单
* 线上下单,新版
*/
@Override
public CTResponse<String> 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<String, Object> 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<String, Object> headers = new HashMap<>();
headers.put("account", personnelId);
headers.put("business_model", "SSLExtInterface");
headers.put("opt_tye", "2");
headers.put("client_ip", ip);
Map<String, Object> 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<AgentOrder> 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<AgentOrder> 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<AgentOrder> 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<String> 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+" --------------------------------------------");

View File

@@ -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<String> saveOrder() throws Exception {
CTResponse<String> response = ctService.saveOrder("", "", "", "", "", "",
"", "", "", "", "", "", "", "", "",
"", "", "", "");
@PostMapping("/saveOrder")
public R<String> 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<String> 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());
}

View File

@@ -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