推送运营商、门店新增
This commit is contained in:
		
							
								
								
									
										161
									
								
								ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								ruoyi-admin/src/main/java/com/ruoyi/api/DataPushApi.java
									
									
									
									
									
										Normal file
									
								
							| @ -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<String> 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<String, Object> 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<RefundRequest> requestEntity = new HttpEntity<>(refundRequest, headers); | ||||||
|  |  | ||||||
|  |             // 打印请求参数便于调试 | ||||||
|  |             String jsonParams = objectMapper.writeValueAsString(refundRequest); | ||||||
|  |             logger.info("退款请求参数: {}", jsonParams); | ||||||
|  |             RestTemplate restTemplate = new RestTemplate(); | ||||||
|  |             ResponseEntity<String> 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<String, Object> 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; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ package com.ruoyi.baseUser.controller; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | import com.ruoyi.api.DataPushApi; | ||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import org.apache.shiro.authz.annotation.RequiresPermissions; | import org.apache.shiro.authz.annotation.RequiresPermissions; | ||||||
| @ -36,6 +37,8 @@ public class ZcBaseUserController extends BaseController | |||||||
|  |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IZcBaseUserService zcBaseUserService; |     private IZcBaseUserService zcBaseUserService; | ||||||
|  |     @Autowired | ||||||
|  |     private DataPushApi dataPushApi; | ||||||
|  |  | ||||||
|     @RequiresPermissions("baseUser:user:view") |     @RequiresPermissions("baseUser:user:view") | ||||||
|     @GetMapping() |     @GetMapping() | ||||||
| @ -93,7 +96,12 @@ public class ZcBaseUserController extends BaseController | |||||||
|     @ResponseBody |     @ResponseBody | ||||||
|     public AjaxResult addSave(ZcBaseUser zcBaseUser) |     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); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ package com.ruoyi.operation.controller; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | import com.ruoyi.api.DataPushApi; | ||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | import com.ruoyi.common.core.domain.entity.SysUser; | ||||||
| import com.ruoyi.common.exception.RRException; | import com.ruoyi.common.exception.RRException; | ||||||
| @ -53,6 +54,9 @@ public class CompanyController extends BaseController | |||||||
|     @Autowired |     @Autowired | ||||||
|     private ISysAreaHnService areaHnService; |     private ISysAreaHnService areaHnService; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     private DataPushApi dataPushApi; | ||||||
|  |  | ||||||
|     @RequiresPermissions("operation:company:view") |     @RequiresPermissions("operation:company:view") | ||||||
|     @GetMapping() |     @GetMapping() | ||||||
|     public String company() |     public String company() | ||||||
| @ -125,6 +129,10 @@ public class CompanyController extends BaseController | |||||||
|         } |         } | ||||||
|         company.setCreateBy(getLoginName()); |         company.setCreateBy(getLoginName()); | ||||||
|         int flag = companyService.insertCompany(company); |         int flag = companyService.insertCompany(company); | ||||||
|  |         if(flag > 0){ | ||||||
|  |             // 推送运营商ID | ||||||
|  |             dataPushApi.sendAddCompany(company.getId()); | ||||||
|  |         } | ||||||
|         return toAjax(flag); |         return toAjax(flag); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ package com.ruoyi.operation.controller; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | import com.ruoyi.api.DataPushApi; | ||||||
| import com.ruoyi.baseUser.domain.ZcBaseUser; | import com.ruoyi.baseUser.domain.ZcBaseUser; | ||||||
| import com.ruoyi.baseUser.service.IZcBaseUserService; | import com.ruoyi.baseUser.service.IZcBaseUserService; | ||||||
| import com.ruoyi.common.constant.CompanyConstants; | import com.ruoyi.common.constant.CompanyConstants; | ||||||
| @ -41,7 +42,8 @@ public class CompanyStoreController extends BaseController | |||||||
|     private ICompanyService companyService; |     private ICompanyService companyService; | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IZcBaseUserService zcBaseUserService; |     private IZcBaseUserService zcBaseUserService; | ||||||
|  |     @Autowired | ||||||
|  |     private DataPushApi dataPushApi; | ||||||
|  |  | ||||||
|     @RequiresPermissions("operation:store:view") |     @RequiresPermissions("operation:store:view") | ||||||
|     @GetMapping() |     @GetMapping() | ||||||
| @ -118,7 +120,12 @@ public class CompanyStoreController extends BaseController | |||||||
|             return error("新增失败,门店编号'" + companyStore.getStoreNumber() + "'已存在"); |             return error("新增失败,门店编号'" + companyStore.getStoreNumber() + "'已存在"); | ||||||
|         } |         } | ||||||
|         companyStore.setCreateBy(getLoginName()); |         companyStore.setCreateBy(getLoginName()); | ||||||
|         return toAjax(companyStoreService.insertCompanyStore(companyStore)); |         int flag = companyStoreService.insertCompanyStore(companyStore); | ||||||
|  |         if(flag > 0){ | ||||||
|  |             // 推送门店ID | ||||||
|  |             dataPushApi.sendAddStore(companyStore.getId()); | ||||||
|  |         } | ||||||
|  |         return toAjax(flag); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ package com.ruoyi.operation.service.impl; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | import com.ruoyi.api.DataPushApi; | ||||||
| import com.ruoyi.common.constant.CompanyConstants; | import com.ruoyi.common.constant.CompanyConstants; | ||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | 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.domain.Company; | ||||||
| import com.ruoyi.operation.service.ICompanyService; | import com.ruoyi.operation.service.ICompanyService; | ||||||
| import com.ruoyi.common.core.text.Convert; | import com.ruoyi.common.core.text.Convert; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 运营商Service业务层处理 |  * 运营商Service业务层处理 | ||||||
| @ -43,6 +45,7 @@ public class CompanyServiceImpl implements ICompanyService | |||||||
|     private ISysAreaHnService areaHnService; |     private ISysAreaHnService areaHnService; | ||||||
|     @Autowired |     @Autowired | ||||||
|     private ISysUserService sysUserService; |     private ISysUserService sysUserService; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询运营商 |      * 查询运营商 | ||||||
|      *  |      *  | ||||||
| @ -94,6 +97,7 @@ public class CompanyServiceImpl implements ICompanyService | |||||||
|      * @param company 运营商 |      * @param company 运营商 | ||||||
|      * @return 结果 |      * @return 结果 | ||||||
|      */ |      */ | ||||||
|  |     @Transactional | ||||||
|     @Override |     @Override | ||||||
|     public int insertCompany(Company company) |     public int insertCompany(Company company) | ||||||
|     { |     { | ||||||
|  | |||||||
| @ -87,7 +87,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService | |||||||
|         companyStore.setCreateTime(DateUtils.getNowDate()); |         companyStore.setCreateTime(DateUtils.getNowDate()); | ||||||
|         companyStore.setUpdateTime(DateUtils.getNowDate()); |         companyStore.setUpdateTime(DateUtils.getNowDate()); | ||||||
|         companyStore.setStatus("0"); |         companyStore.setStatus("0"); | ||||||
|  |         companyStore.setAddress(companyStore.getProvinceName()+companyStore.getCityName()+companyStore.getAreaName()); | ||||||
|         setAreaInfo(companyStore); |         setAreaInfo(companyStore); | ||||||
|         int flag = companyStoreMapper.insertCompanyStore(companyStore); |         int flag = companyStoreMapper.insertCompanyStore(companyStore); | ||||||
|         if(flag > 0){ |         if(flag > 0){ | ||||||
| @ -106,7 +106,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService | |||||||
|     private void setAreaInfo(CompanyStore companyStore){ |     private void setAreaInfo(CompanyStore companyStore){ | ||||||
|         //获取当前区划 |         //获取当前区划 | ||||||
|         String areaCode = companyStore.getAreaId(); |         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.setCityId(areaHn.getAreaCode()); | ||||||
|         companyStore.setCityName(areaHn.getName()); |         companyStore.setCityName(areaHn.getName()); | ||||||
|         companyStore.setProvinceId(areaHn.getParentCode()); |         companyStore.setProvinceId(areaHn.getParentCode()); | ||||||
| @ -124,7 +124,7 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService | |||||||
|     { |     { | ||||||
|         companyStore.setUpdateTime(DateUtils.getNowDate()); |         companyStore.setUpdateTime(DateUtils.getNowDate()); | ||||||
|         companyStore.setStatus("0"); |         companyStore.setStatus("0"); | ||||||
|  |         companyStore.setAddress(companyStore.getProvinceName()+companyStore.getCityName()+companyStore.getAreaName()); | ||||||
|         setAreaInfo(companyStore); |         setAreaInfo(companyStore); | ||||||
|         return companyStoreMapper.updateCompanyStore(companyStore); |         return companyStoreMapper.updateCompanyStore(companyStore); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import java.math.BigDecimal; | |||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|  | import com.ruoyi.api.DataPushApi; | ||||||
| import com.ruoyi.common.utils.DateUtils; | import com.ruoyi.common.utils.DateUtils; | ||||||
| import com.ruoyi.common.utils.ShiroUtils; | import com.ruoyi.common.utils.ShiroUtils; | ||||||
| import com.ruoyi.operation.domain.ZcCar; | import com.ruoyi.operation.domain.ZcCar; | ||||||
| @ -57,10 +58,8 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService | |||||||
|     @Autowired |     @Autowired | ||||||
|     private IZcCarService zcCarService; |     private IZcCarService zcCarService; | ||||||
|     @Autowired |     @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); |         return zcOrderMainMapper.deleteZcOrderMainByOrderId(orderId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Transactional | ||||||
|     @Override |     @Override | ||||||
|     public int updateManualEndOrder(Long orderId) { |     public int updateManualEndOrder(Long orderId) { | ||||||
|         // 1. 参数校验 |         // 1. 参数校验 | ||||||
| @ -229,19 +229,20 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService | |||||||
|             refundSub.setRefundId(suborderNo); |             refundSub.setRefundId(suborderNo); | ||||||
|             refundSub.setCreateTime(DateUtils.getNowDate()); |             refundSub.setCreateTime(DateUtils.getNowDate()); | ||||||
|  |  | ||||||
| //            // 调用退款接口并检查结果 |             // 调用退款接口并检查结果 | ||||||
| //            boolean bool = callRefundApi(querySub, suborderNo, refundAmount, queryOrder.getOperatorId()); |             boolean bool = dataPushApi.callRefundApi(refundSub, queryOrder.getOperatorId()); | ||||||
| //            if(bool) { |             if(bool) { | ||||||
| //                // 创建退款成功子订单 |                 // 创建退款成功子订单 | ||||||
| //                zcOrderSubService.insertZcOrderSub(refundSub); |                 refundSub.setPayStatus("SUCCESS"); | ||||||
| //             } |                 zcOrderSubService.insertZcOrderSub(refundSub); | ||||||
| //            return bool; |              } | ||||||
|  |             return bool; | ||||||
|  |  | ||||||
|             // 在新事务中插入退款子订单 | //            // 在新事务中插入退款子订单 | ||||||
|             insertRefundSubInNewTransaction(refundSub); | //            insertRefundSubInNewTransaction(refundSub); | ||||||
|  | // | ||||||
|             // 调用退款接口并检查结果(此时数据库中已有退款订单数据) | //            // 调用退款接口并检查结果(此时数据库中已有退款订单数据) | ||||||
|             return callRefundApi(refundSub, queryOrder.getOperatorId()); | //            return callRefundApi(refundSub, queryOrder.getOperatorId()); | ||||||
|  |  | ||||||
|         } |         } | ||||||
|         return true; // 如果没有押金子订单,认为退款成功 |         return true; // 如果没有押金子订单,认为退款成功 | ||||||
| @ -255,7 +256,7 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService | |||||||
|         zcOrderSubService.insertZcOrderSub(refundSub); |         zcOrderSubService.insertZcOrderSub(refundSub); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional |  | ||||||
|     public int updateRefundZcOrderMain(Long orderId, ZcOrderMain queryOrder){ |     public int updateRefundZcOrderMain(Long orderId, ZcOrderMain queryOrder){ | ||||||
|         // 4. 退款成功后,更新订单状态 |         // 4. 退款成功后,更新订单状态 | ||||||
|         ZcOrderMain zcOrderMain = new ZcOrderMain(); |         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<RefundRequest> requestEntity = new HttpEntity<>(refundRequest, headers); |  | ||||||
|  |  | ||||||
|             // 打印请求参数便于调试 |  | ||||||
|             String jsonParams = objectMapper.writeValueAsString(refundRequest); |  | ||||||
|             logger.info("退款请求参数: {}", jsonParams); |  | ||||||
|             RestTemplate restTemplate = new RestTemplate(); |  | ||||||
|             ResponseEntity<String> 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<String, Object> 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; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 新增租车子订单信息 |      * 新增租车子订单信息 | ||||||
|  | |||||||
| @ -85,3 +85,8 @@ renren: | |||||||
|  |  | ||||||
| pay: | pay: | ||||||
|     refundUrl: http://115.190.8.52:8019/api/payment/refund |     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/ | ||||||
|  | |||||||
| @ -56,9 +56,9 @@ | |||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <div class="form-group">     |             <div class="form-group">     | ||||||
|                 <label class="col-sm-3 control-label">地址:</label> |                 <label class="col-sm-3 control-label is-required">地址:</label> | ||||||
|                 <div class="col-sm-8"> |                 <div class="col-sm-8"> | ||||||
|                     <input name="address" class="form-control" type="text"  maxlength="100"> |                     <input name="address" class="form-control" type="text"  maxlength="100" required> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|         |         | ||||||
|  | |||||||
| @ -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){ |         function doSubmit(index, layero){ | ||||||
|             var tree = layero.find("iframe")[0].contentWindow.$._tree; |             var tree = layero.find("iframe")[0].contentWindow.$._tree; | ||||||
|             var body = $.modal.getChildFrame(index); |             var body = $.modal.getChildFrame(index); | ||||||
|  | |||||||
| @ -166,7 +166,7 @@ | |||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <br/> |             <br/> | ||||||
|             <button type="button" th:if="not (*{orderStatus} == 'AUTO_END' or *{orderStatus} == 'MANUAL_END')" class="btn btn-success btn-xs" onclick="manualEndOrder()">手动结束订单</i></button> |             <button type="button" th:if="not (*{orderStatus} == 'AUTO_END' or *{orderStatus} == 'MANUAL_END' or *{orderStatus} == 'WAIT_PAY')" class="btn btn-success btn-xs" onclick="manualEndOrder()">手动结束订单</i></button> | ||||||
|         </form> |         </form> | ||||||
|     </div> |     </div> | ||||||
|     <th:block th:include="include :: footer" /> |     <th:block th:include="include :: footer" /> | ||||||
|  | |||||||
| @ -13,18 +13,7 @@ public class CodeConstants { | |||||||
|      */ |      */ | ||||||
|     public final static String IMPORT_EXECUTE = "000000"; |     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 |      * 医保低保户和特困预警type | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 19173159168
					19173159168