From 0a9a4aa3615d26ddf65b66289285c3cf84bff99b Mon Sep 17 00:00:00 2001 From: 19173159168 Date: Sun, 31 Aug 2025 20:44:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=BF=90=E8=90=A5=E5=95=86?= =?UTF-8?q?=E3=80=81=E9=97=A8=E5=BA=97=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/api/DataPushApi.java | 161 ++++++++++++++++++ .../controller/ZcBaseUserController.java | 10 +- .../controller/CompanyController.java | 8 + .../controller/CompanyStoreController.java | 11 +- .../service/impl/CompanyServiceImpl.java | 4 + .../service/impl/CompanyStoreServiceImpl.java | 6 +- .../service/impl/ZcOrderMainServiceImpl.java | 96 ++--------- .../src/main/resources/application-dev.yml | 7 +- .../templates/operation/company/add.html | 4 +- .../templates/operation/company/edit.html | 13 -- .../templates/orders/order/edit.html | 2 +- .../ruoyi/common/constant/CodeConstants.java | 13 +- 12 files changed, 221 insertions(+), 114 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java new file mode 100644 index 0000000..0377610 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java @@ -0,0 +1,161 @@ +package com.ruoyi.api; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.orders.domain.ZcOrderSub; +import com.ruoyi.orders.dto.RefundRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.math.BigDecimal; +import java.util.Map; + +@Service +public class DataPushApi { + private static final Logger logger = LoggerFactory.getLogger(DataPushApi.class); + + @Autowired + private ObjectMapper objectMapper; + + @Value(value = "${pay.refundUrl}") + private String refundUrl; + + @Value(value = "${dataPush.sendAddCompanyUrl}") + private String sendAddCompanyUrl; + @Value(value = "${dataPush.sendAddStoreUrl}") + private String sendAddStoreUrl; + @Value(value = "${dataPush.sendAddUserUrl}") + private String sendAddUserUrl; + + /** + * 发送添加运营商信息 + * @param companyId + */ + public boolean sendAddCompany(Long companyId) { + return sendDataId(sendAddCompanyUrl, companyId, "运营商"); + } + + /** + * 发送添加门店信息 + * @param storeId + */ + public boolean sendAddStore(Long storeId) { + return sendDataId(sendAddStoreUrl, storeId, "门店"); + } + /** + * 发送添加用户信息 + * @param userId + */ + public boolean sendAddUser(Long userId) { + return sendDataId(sendAddUserUrl, userId, "用户"); + } + + + private boolean sendDataId(String url,Long id,String name) { + try { + // 发送HTTP请求调用添加接口 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.getForEntity(url + id, String.class); + + // 处理添加接口响应 + if (response.getStatusCode() == HttpStatus.OK) { + // 解析响应内容,检查return_code是否为SUCCESS + String responseBody = response.getBody(); + if (responseBody != null) { + try { + // 使用ObjectMapper解析JSON响应 + Map responseMap = objectMapper.readValue(responseBody, Map.class); + Object returnCode = responseMap.get("code"); + if ("200".equals(returnCode)) { + logger.info("推送{}ID成功,ID: {}", name, id); + return true; + } else { + logger.error("推送{}ID失败,ID: {},响应: {}", name, id, responseBody); + return false; + } + } catch (Exception jsonEx) { + logger.error("推送{}ID接口响应异常,ID: {},响应: {}", name, id, responseBody, jsonEx); + return false; + } + } else { + logger.error("推送{}ID返回空响应,ID: {}", name, id); + return false; + } + } else { + logger.error("推送{}ID,ID: {},响应: {}", name, id, response.getBody()); + return false; + } + } catch (Exception e) { + logger.error("推送门店ID异常,ID: " + name, id, e); + return false; + } + } + /** + * 调用退款接口 + * @param refundSub + * @param operatorId 运营商ID + * @return 退款是否成功 + */ + public boolean callRefundApi(ZcOrderSub refundSub, Long operatorId) { + String refundNo = refundSub.getRefundId(); + try { + // 准备退款请求参数 + RefundRequest refundRequest = new RefundRequest(); + refundRequest.setCompanyId(operatorId);// 运营商id + refundRequest.setOutTradeNo(refundSub.getPaymentId()); // 原始押金子订单payment_id + refundRequest.setOutRefundNo(refundNo);// 退款子订单编号 + refundRequest.setRefundDesc("手动结束订单退款");// 退款描述 + refundRequest.setTotalFee(new BigDecimal(0)); + refundRequest.setRefundFee(refundSub.getAmount().multiply(new BigDecimal(100))); // 退款金额 分 + + // 发送HTTP请求调用退款接口 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity requestEntity = new HttpEntity<>(refundRequest, headers); + + // 打印请求参数便于调试 + String jsonParams = objectMapper.writeValueAsString(refundRequest); + logger.info("退款请求参数: {}", jsonParams); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(refundUrl, requestEntity, String.class); + + // 处理退款接口响应 + if (response.getStatusCode() == HttpStatus.OK) { + // 解析响应内容,检查return_code是否为SUCCESS + String responseBody = response.getBody(); + if (responseBody != null) { + try { + // 使用ObjectMapper解析JSON响应 + Map responseMap = objectMapper.readValue(responseBody, Map.class); + Object returnCode = responseMap.get("return_code"); + if ("SUCCESS".equals(returnCode)) { + logger.info("退款成功,退款单号: {}", refundNo); + return true; + } else { + logger.error("退款失败,退款单号: {},响应: {}", refundNo, responseBody); + return false; + } + } catch (Exception jsonEx) { + logger.error("解析退款接口响应异常,退款单号: {},响应: {}", refundNo, responseBody, jsonEx); + return false; + } + } else { + logger.error("退款接口返回空响应,退款单号: {}", refundNo); + return false; + } + } else { + logger.error("退款失败,退款单号: {},响应: {}", refundNo, response.getBody()); + return false; + } + } catch (Exception e) { + logger.error("调用退款接口异常,退款单号: " + refundNo, e); + return false; + } + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/baseUser/controller/ZcBaseUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/baseUser/controller/ZcBaseUserController.java index 4bbfbd2..d14e7e5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/baseUser/controller/ZcBaseUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/baseUser/controller/ZcBaseUserController.java @@ -2,6 +2,7 @@ package com.ruoyi.baseUser.controller; import java.util.List; +import com.ruoyi.api.DataPushApi; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.utils.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -36,6 +37,8 @@ public class ZcBaseUserController extends BaseController @Autowired private IZcBaseUserService zcBaseUserService; + @Autowired + private DataPushApi dataPushApi; @RequiresPermissions("baseUser:user:view") @GetMapping() @@ -93,7 +96,12 @@ public class ZcBaseUserController extends BaseController @ResponseBody public AjaxResult addSave(ZcBaseUser zcBaseUser) { - return toAjax(zcBaseUserService.insertZcBaseUser(zcBaseUser)); + int flag = zcBaseUserService.insertZcBaseUser(zcBaseUser); + if(flag > 0){ + // 推送用户ID + dataPushApi.sendAddUser(zcBaseUser.getId()); + } + return toAjax(flag); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java index 0b80d68..ff1602f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java @@ -2,6 +2,7 @@ package com.ruoyi.operation.controller; import java.util.List; +import com.ruoyi.api.DataPushApi; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.RRException; @@ -53,6 +54,9 @@ public class CompanyController extends BaseController @Autowired private ISysAreaHnService areaHnService; + @Autowired + private DataPushApi dataPushApi; + @RequiresPermissions("operation:company:view") @GetMapping() public String company() @@ -125,6 +129,10 @@ public class CompanyController extends BaseController } company.setCreateBy(getLoginName()); int flag = companyService.insertCompany(company); + if(flag > 0){ + // 推送运营商ID + dataPushApi.sendAddCompany(company.getId()); + } return toAjax(flag); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java index 97e58d2..e6d8ce8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java @@ -2,6 +2,7 @@ package com.ruoyi.operation.controller; import java.util.List; +import com.ruoyi.api.DataPushApi; import com.ruoyi.baseUser.domain.ZcBaseUser; import com.ruoyi.baseUser.service.IZcBaseUserService; import com.ruoyi.common.constant.CompanyConstants; @@ -41,7 +42,8 @@ public class CompanyStoreController extends BaseController private ICompanyService companyService; @Autowired private IZcBaseUserService zcBaseUserService; - + @Autowired + private DataPushApi dataPushApi; @RequiresPermissions("operation:store:view") @GetMapping() @@ -118,7 +120,12 @@ public class CompanyStoreController extends BaseController return error("新增失败,门店编号'" + companyStore.getStoreNumber() + "'已存在"); } companyStore.setCreateBy(getLoginName()); - return toAjax(companyStoreService.insertCompanyStore(companyStore)); + int flag = companyStoreService.insertCompanyStore(companyStore); + if(flag > 0){ + // 推送门店ID + dataPushApi.sendAddStore(companyStore.getId()); + } + return toAjax(flag); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java index 393c18b..907ae5f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.operation.service.impl; import java.util.List; +import com.ruoyi.api.DataPushApi; import com.ruoyi.common.constant.CompanyConstants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; @@ -21,6 +22,7 @@ import com.ruoyi.operation.mapper.CompanyMapper; import com.ruoyi.operation.domain.Company; import com.ruoyi.operation.service.ICompanyService; import com.ruoyi.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; /** * 运营商Service业务层处理 @@ -43,6 +45,7 @@ public class CompanyServiceImpl implements ICompanyService private ISysAreaHnService areaHnService; @Autowired private ISysUserService sysUserService; + /** * 查询运营商 * @@ -94,6 +97,7 @@ public class CompanyServiceImpl implements ICompanyService * @param company 运营商 * @return 结果 */ + @Transactional @Override public int insertCompany(Company company) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java index 5b3773a..09bdba4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java @@ -87,7 +87,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService companyStore.setCreateTime(DateUtils.getNowDate()); companyStore.setUpdateTime(DateUtils.getNowDate()); companyStore.setStatus("0"); - + companyStore.setAddress(companyStore.getProvinceName()+companyStore.getCityName()+companyStore.getAreaName()); setAreaInfo(companyStore); int flag = companyStoreMapper.insertCompanyStore(companyStore); if(flag > 0){ @@ -106,7 +106,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService private void setAreaInfo(CompanyStore companyStore){ //获取当前区划 String areaCode = companyStore.getAreaId(); - SysAreaHn areaHn = sysAreaHnService.selectSysAreaHnByCode(areaCode.substring(0,4)+"00000000"); + SysAreaHn areaHn = sysAreaHnService.selectSysAreaHnByCode(areaCode.substring(0,4)+"00"); companyStore.setCityId(areaHn.getAreaCode()); companyStore.setCityName(areaHn.getName()); companyStore.setProvinceId(areaHn.getParentCode()); @@ -124,7 +124,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService { companyStore.setUpdateTime(DateUtils.getNowDate()); companyStore.setStatus("0"); - + companyStore.setAddress(companyStore.getProvinceName()+companyStore.getCityName()+companyStore.getAreaName()); setAreaInfo(companyStore); return companyStoreMapper.updateCompanyStore(companyStore); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java index fb6b06f..cf3f8ac 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.List; +import com.ruoyi.api.DataPushApi; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.operation.domain.ZcCar; @@ -57,10 +58,8 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService @Autowired private IZcCarService zcCarService; @Autowired - private ObjectMapper objectMapper; + private DataPushApi dataPushApi; - @Value(value = "${pay.refundUrl}") - private String refundUrl; /** * 查询租车订单 @@ -152,6 +151,7 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService return zcOrderMainMapper.deleteZcOrderMainByOrderId(orderId); } + @Transactional @Override public int updateManualEndOrder(Long orderId) { // 1. 参数校验 @@ -229,19 +229,20 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService refundSub.setRefundId(suborderNo); refundSub.setCreateTime(DateUtils.getNowDate()); -// // 调用退款接口并检查结果 -// boolean bool = callRefundApi(querySub, suborderNo, refundAmount, queryOrder.getOperatorId()); -// if(bool) { -// // 创建退款成功子订单 -// zcOrderSubService.insertZcOrderSub(refundSub); -// } -// return bool; + // 调用退款接口并检查结果 + boolean bool = dataPushApi.callRefundApi(refundSub, queryOrder.getOperatorId()); + if(bool) { + // 创建退款成功子订单 + refundSub.setPayStatus("SUCCESS"); + zcOrderSubService.insertZcOrderSub(refundSub); + } + return bool; - // 在新事务中插入退款子订单 - insertRefundSubInNewTransaction(refundSub); - - // 调用退款接口并检查结果(此时数据库中已有退款订单数据) - return callRefundApi(refundSub, queryOrder.getOperatorId()); +// // 在新事务中插入退款子订单 +// insertRefundSubInNewTransaction(refundSub); +// +// // 调用退款接口并检查结果(此时数据库中已有退款订单数据) +// return callRefundApi(refundSub, queryOrder.getOperatorId()); } return true; // 如果没有押金子订单,认为退款成功 @@ -255,7 +256,7 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService zcOrderSubService.insertZcOrderSub(refundSub); } - @Transactional + public int updateRefundZcOrderMain(Long orderId, ZcOrderMain queryOrder){ // 4. 退款成功后,更新订单状态 ZcOrderMain zcOrderMain = new ZcOrderMain(); @@ -286,69 +287,6 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService } - /** - * 调用退款接口 - * @param refundSub - * @param operatorId 运营商ID - * @return 退款是否成功 - */ - private boolean callRefundApi(ZcOrderSub refundSub, Long operatorId) { - String refundNo = refundSub.getRefundId(); - try { - // 准备退款请求参数 - RefundRequest refundRequest = new RefundRequest(); - refundRequest.setCompanyId(operatorId);// 运营商id - refundRequest.setOutTradeNo(refundSub.getPaymentId()); // 原始押金子订单payment_id - refundRequest.setOutRefundNo(refundNo);// 退款子订单编号 - refundRequest.setRefundDesc("手动结束订单退款");// 退款描述 - refundRequest.setTotalFee(new BigDecimal(0)); - refundRequest.setRefundFee(refundSub.getAmount().multiply(new BigDecimal(100))); // 退款金额 分 - - // 发送HTTP请求调用退款接口 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity requestEntity = new HttpEntity<>(refundRequest, headers); - - // 打印请求参数便于调试 - String jsonParams = objectMapper.writeValueAsString(refundRequest); - logger.info("退款请求参数: {}", jsonParams); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(refundUrl, requestEntity, String.class); - - // 处理退款接口响应 - if (response.getStatusCode() == HttpStatus.OK) { - // 解析响应内容,检查return_code是否为SUCCESS - String responseBody = response.getBody(); - if (responseBody != null) { - try { - // 使用ObjectMapper解析JSON响应 - Map responseMap = objectMapper.readValue(responseBody, Map.class); - Object returnCode = responseMap.get("return_code"); - if ("SUCCESS".equals(returnCode)) { - logger.info("退款成功,退款单号: {}", refundNo); - return true; - } else { - logger.error("退款失败,退款单号: {},响应: {}", refundNo, responseBody); - return false; - } - } catch (Exception jsonEx) { - logger.error("解析退款接口响应异常,退款单号: {},响应: {}", refundNo, responseBody, jsonEx); - return false; - } - } else { - logger.error("退款接口返回空响应,退款单号: {}", refundNo); - return false; - } - } else { - logger.error("退款失败,退款单号: {},响应: {}", refundNo, response.getBody()); - return false; - } - } catch (Exception e) { - logger.error("调用退款接口异常,退款单号: " + refundNo, e); - return false; - } - } /** * 新增租车子订单信息 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index fbc249c..be35b3d 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -84,4 +84,9 @@ renren: header: token pay: - refundUrl: http://115.190.8.52:8019/api/payment/refund \ No newline at end of file + refundUrl: http://115.190.8.52:8019/api/payment/refund + +dataPush: + sendAddCompanyUrl: http://115.190.8.52:8016/send/companyinfo/ + sendAddStoreUrl: http://115.190.8.52:8016/send/storeinfo/ + sendAddUserUrl: http://115.190.8.52:8016/send/userinfo/ diff --git a/ruoyi-admin/src/main/resources/templates/operation/company/add.html b/ruoyi-admin/src/main/resources/templates/operation/company/add.html index b4435f5..4824ecb 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/company/add.html +++ b/ruoyi-admin/src/main/resources/templates/operation/company/add.html @@ -56,9 +56,9 @@
- +
- +
diff --git a/ruoyi-admin/src/main/resources/templates/operation/company/edit.html b/ruoyi-admin/src/main/resources/templates/operation/company/edit.html index 06876f8..0dd38f7 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/company/edit.html +++ b/ruoyi-admin/src/main/resources/templates/operation/company/edit.html @@ -112,19 +112,6 @@ } } - /* 用户管理-修改-选择部门树 */ - function selectDeptTree() { - var deptId = $.common.isEmpty($("#treeId").val()) ? "431200000000" : $("#treeId").val(); - var url = ctx + "system/dept/selectDeptTree/" + deptId; - var options = { - title: '选择部门', - width: "380", - url: url, - callBack: doSubmit - }; - $.modal.openOptions(options); - } - function doSubmit(index, layero){ var tree = layero.find("iframe")[0].contentWindow.$._tree; var body = $.modal.getChildFrame(index); diff --git a/ruoyi-admin/src/main/resources/templates/orders/order/edit.html b/ruoyi-admin/src/main/resources/templates/orders/order/edit.html index 74ceb0d..4187124 100644 --- a/ruoyi-admin/src/main/resources/templates/orders/order/edit.html +++ b/ruoyi-admin/src/main/resources/templates/orders/order/edit.html @@ -166,7 +166,7 @@
- + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CodeConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CodeConstants.java index 1fc67c0..db3bc6d 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CodeConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CodeConstants.java @@ -13,18 +13,7 @@ public class CodeConstants { */ public final static String IMPORT_EXECUTE = "000000"; - /** - * 9月一号 - */ - public final static String MONTH_DAY_9_1 = "09-01"; - /** - * 省code - */ - public final static String PROVINCE_CODE = "430000000000"; - /** - * 怀化市code - */ - public final static String HUAI_HUA_CODE = "431200000000"; + /** * 医保低保户和特困预警type