提交代码

dev
胡锐 2 months ago
parent 6d40d6af50
commit 2e24609291
  1. 40
      bweb/src/main/java/com/bweb/controller/BsOrderRefundController.java
  2. 16
      bweb/src/main/java/com/bweb/controller/notify/NewLinkNotify.java
  3. 97
      service/src/main/java/com/hfkj/openapi/service/ApiGasOrderService.java
  4. 6
      service/src/main/java/com/hfkj/service/order/BsOrderRefundService.java
  5. 12
      service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java

@ -9,12 +9,16 @@ import com.hfkj.common.exception.SysCode;
import com.hfkj.common.security.UserCenter; import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.DateUtil; import com.hfkj.common.utils.DateUtil;
import com.hfkj.common.utils.ResponseMsgUtil; import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsGasOrder;
import com.hfkj.entity.BsOrder; import com.hfkj.entity.BsOrder;
import com.hfkj.entity.BsOrderRefund; import com.hfkj.entity.BsOrderRefund;
import com.hfkj.model.ResponseData; import com.hfkj.model.ResponseData;
import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.SecUserSessionObject;
import com.hfkj.model.UserSessionObject; import com.hfkj.model.UserSessionObject;
import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderChildModel;
import com.hfkj.openapi.model.request.RequestOrderRefundModel;
import com.hfkj.openapi.service.ApiGasOrderService;
import com.hfkj.service.gas.BsGasOrderService;
import com.hfkj.service.order.BsOrderChildService; import com.hfkj.service.order.BsOrderChildService;
import com.hfkj.service.order.BsOrderRefundService; import com.hfkj.service.order.BsOrderRefundService;
import com.hfkj.service.order.BsOrderService; import com.hfkj.service.order.BsOrderService;
@ -49,9 +53,13 @@ public class BsOrderRefundController {
@Resource @Resource
private BsOrderRefundService orderRefundService; private BsOrderRefundService orderRefundService;
@Resource @Resource
private ApiGasOrderService apiGasOrderService;
@Resource
private BsOrderService orderService; private BsOrderService orderService;
@Resource @Resource
private BsOrderChildService orderChildService; private BsOrderChildService orderChildService;
@Resource
private BsGasOrderService gasOrderService;
@RequestMapping(value="/tradeOrder",method = RequestMethod.POST) @RequestMapping(value="/tradeOrder",method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "退款交易订单") @ApiOperation(value = "退款交易订单")
@ -123,6 +131,38 @@ public class BsOrderRefundController {
} }
} }
@RequestMapping(value="/refundApiOrder",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "退款API加油订单")
public ResponseData refundApiOrder(@RequestBody JSONObject body) {
try {
// 用户session
SecUserSessionObject userSession = userCenter.getSessionModel(SecUserSessionObject.class);
if (userSession == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
}
if (body == null || StringUtils.isBlank(body.getString("orderNo"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
// 查询加油订单
BsGasOrder gasOrder = gasOrderService.getDetailByOrderNo(body.getString("orderNo"));
if (gasOrder == null) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "未找到订单");
}
if (gasOrder.getAgentId() == null) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "未找到订单");
}
RequestOrderRefundModel request = new RequestOrderRefundModel();
request.setOrderNo(body.getString("orderNo"));
request.setRefundReason(body.getString("remark"));
return ResponseMsgUtil.success(apiGasOrderService.refundOrder(gasOrder.getAgentId(), request));
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/queryRefund",method = RequestMethod.GET) @RequestMapping(value="/queryRefund",method = RequestMethod.GET)
@ResponseBody @ResponseBody
@ApiOperation(value = "查询退款订单") @ApiOperation(value = "查询退款订单")

@ -3,16 +3,27 @@ package com.bweb.controller.notify;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.gas.newlink.NewLinkGasService; import com.hfkj.channel.gas.newlink.NewLinkGasService;
import com.hfkj.channel.gas.newlink.NewLinkRequestService; import com.hfkj.channel.gas.newlink.NewLinkRequestService;
import com.hfkj.common.exception.BaseException;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.pay.util.SignatureUtil;
import com.hfkj.common.security.AESEncodeUtil; import com.hfkj.common.security.AESEncodeUtil;
import com.hfkj.common.utils.HttpsUtils;
import com.hfkj.entity.BsAgentApiParam;
import com.hfkj.entity.BsGasOrder; import com.hfkj.entity.BsGasOrder;
import com.hfkj.entity.BsOrderRefund; import com.hfkj.entity.BsOrderRefund;
import com.hfkj.openapi.model.request.RequestOrderRefundModel; import com.hfkj.openapi.model.request.RequestOrderRefundModel;
import com.hfkj.openapi.model.response.OrderRefundNotifyModel;
import com.hfkj.openapi.service.ApiGasOrderService; import com.hfkj.openapi.service.ApiGasOrderService;
import com.hfkj.service.gas.BsGasOrderService; import com.hfkj.service.gas.BsGasOrderService;
import com.hfkj.service.order.BsOrderRefundService; import com.hfkj.service.order.BsOrderRefundService;
import com.hfkj.sysenum.gas.GasOrderCreateType; import com.hfkj.sysenum.gas.GasOrderCreateType;
import com.hfkj.sysenum.gas.OrderOilStatus;
import com.hfkj.sysenum.order.OrderRefundStatusEnum;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -20,6 +31,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* @className: NewLinkNotify * @className: NewLinkNotify
@ -85,9 +99,9 @@ public class NewLinkNotify {
// 退款 // 退款
RequestOrderRefundModel requestOrderRefund = new RequestOrderRefundModel(); RequestOrderRefundModel requestOrderRefund = new RequestOrderRefundModel();
requestOrderRefund.setOrderNo(gasOrder.getOrderNo()); requestOrderRefund.setOrderNo(gasOrder.getOrderNo());
requestOrderRefund.setRefundReason(data.getString("refundFailReason"));
apiGasOrderService.refundOrder(gasOrder.getAgentId(), requestOrderRefund); apiGasOrderService.refundOrder(gasOrder.getAgentId(), requestOrderRefund);
data.getString("refundFailReason");
} }
} }
} }

@ -270,7 +270,7 @@ public class ApiGasOrderService {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "未找到订单"); throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "未找到订单");
} }
if (!gasOrder.getStatus().equals(OrderOilStatus.STATUS2.getNumber()) if (!gasOrder.getStatus().equals(OrderOilStatus.STATUS2.getNumber())
|| !gasOrder.getStatus().equals(OrderOilStatus.STATUS6.getNumber())) { && !gasOrder.getStatus().equals(OrderOilStatus.STATUS6.getNumber())) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "订单状态暂时无法申请退款"); throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "订单状态暂时无法申请退款");
} }
// 创建退款订单 // 创建退款订单
@ -359,6 +359,7 @@ public class ApiGasOrderService {
return "ok"; return "ok";
} }
/** /**
* 退款金额 * 退款金额
* @param gasOrder * @param gasOrder
@ -366,28 +367,22 @@ public class ApiGasOrderService {
* @return * @return
*/ */
private void refundPrice(BsGasOrder gasOrder, BsOrderRefund orderRefund) { private void refundPrice(BsGasOrder gasOrder, BsOrderRefund orderRefund) {
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type2.getNumber())) { // 异常订单
// 团油 if (gasOrder.getAbnormal().equals(true)) {
try { try {
// 请求团油渠道申请退款 if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type3.getNumber())) {
JSONObject object = NewLinkRequestService.refuelingOrderRefund(gasOrder.getUserPhone(), gasOrder.getOrderNo(), orderRefund.getRefundRemark()); // 未出现异常
if (object == null || !object.getString("code").equals("200")) { if (gasOrder.getAbnormal().equals(false)) {
gasOrder.setAbnormal(true); // 请求重庆壳牌渠道退款
gasOrder.setAbnormalContent("渠道申请退款失败!原因:" + object.getString("message")); CqShellPetroleumRequestService.gasSyncRefund(gasOrder.getPayTime(), gasOrder.getOrderNo());
gasOrderService.updateGasOrder(gasOrder); }
} }
} catch (Exception e) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败");
}
} else {
try {
// 代理商退款退款 // 代理商退款退款
agentApiAccountService.refund(gasOrder.getAgentId(),gasOrder.getGasRefuelPrice(), orderRefund); agentApiAccountService.refund(gasOrder.getAgentId(),gasOrder.getGasRefuelPrice(), orderRefund);
// 退款到油站 // 退款到油站
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) { if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) {
merchantAccountService.refund(gasOrder.getMerNo(),gasOrder.getGasSettlePrice(),orderRefund); merchantAccountService.refund(gasOrder.getMerNo(),gasOrder.getGasSettlePrice(),orderRefund);
} }
orderRefund.setRefundStatus(OrderRefundStatusEnum.status2.getCode()); orderRefund.setRefundStatus(OrderRefundStatusEnum.status2.getCode());
orderRefund.setFinishTime(new Date()); orderRefund.setFinishTime(new Date());
orderRefundService.editData(orderRefund); orderRefundService.editData(orderRefund);
@ -399,9 +394,81 @@ public class ApiGasOrderService {
} catch (Exception e) { } catch (Exception e) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败"); throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败");
} }
} else {
// 正常订单
// 渠道退款
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type2.getNumber())) {
// 团油
try {
// 请求团油渠道申请退款
JSONObject object = NewLinkRequestService.refuelingOrderRefund(gasOrder.getUserPhone(), gasOrder.getOrderNo(), orderRefund.getRefundRemark());
if (object == null || !object.getString("code").equals("200")) {
gasOrder.setAbnormal(true);
gasOrder.setAbnormalContent("渠道申请退款失败!原因:" + object.getString("message"));
gasOrderService.updateGasOrder(gasOrder);
}
} catch (Exception e) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败");
}
} else {
// 重庆壳牌
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type3.getNumber())) {
try {
// 请求重庆壳牌渠道退款
CqShellPetroleumRequestService.gasSyncRefund(gasOrder.getPayTime(), gasOrder.getOrderNo());
} catch (Exception e) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败");
}
}
try {
// 代理商退款退款
agentApiAccountService.refund(gasOrder.getAgentId(),gasOrder.getGasRefuelPrice(), orderRefund);
// 退款到油站
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) {
merchantAccountService.refund(gasOrder.getMerNo(),gasOrder.getGasSettlePrice(),orderRefund);
}
orderRefund.setRefundStatus(OrderRefundStatusEnum.status2.getCode());
orderRefund.setFinishTime(new Date());
orderRefundService.editData(orderRefund);
gasOrder.setStatus(OrderOilStatus.STATUS4.getNumber());
gasOrder.setRefundTime(orderRefund.getFinishTime());
gasOrderService.updateGasOrder(gasOrder);
} catch (Exception e) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.COMMON_ERROR, "请求退款失败");
}
}
} }
} }
/* @Transactional(propagation= Propagation.REQUIRES_NEW,isolation = Isolation.SERIALIZABLE,rollbackFor= {RuntimeException.class})
private void newLinkNotify(BsGasOrder gasOrder,String refundFailReason) {
BsOrderRefund orderRefund = orderRefundService.getRefundByOrderNo(gasOrder.getOrderNo());
try {
if (orderRefund != null) {
orderRefund.setRefundStatus(OrderRefundStatusEnum.status2.getCode());
orderRefund.setFinishTime(new Date());
orderRefund.setRefundFailReason(refundFailReason);
orderRefundService.editData(orderRefund);
}
// 代理商退款退款
agentApiAccountService.refund(gasOrder.getAgentId(),gasOrder.getGasRefuelPrice(), orderRefund);
// 退款到油站
if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) {
merchantAccountService.refund(gasOrder.getMerNo(),gasOrder.getGasSettlePrice(),orderRefund);
}
gasOrder.setStatus(OrderOilStatus.STATUS4.getNumber());
gasOrder.setRefundTime(new Date());
gasOrderService.updateGasOrder(gasOrder);
} catch (Exception e) {
if (orderRefund != null) {
orderRefund.set
}
}
}*/
/** /**
* 查询订单详情 * 查询订单详情
* @param request * @param request

@ -55,6 +55,12 @@ public interface BsOrderRefundService {
* @return * @return
*/ */
BsOrderRefund getRefundByChildOrderNo(String childOrderNo); BsOrderRefund getRefundByChildOrderNo(String childOrderNo);
/**
* 根据子订单号查询退款中的订单
* @param orderNo
* @return
*/
BsOrderRefund getRefundByOrderNo(String orderNo);
/** /**
* 查询退款列表 * 查询退款列表

@ -296,6 +296,18 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService {
return null; return null;
} }
@Override
public BsOrderRefund getRefundByOrderNo(String orderNo) {
BsOrderRefundExample example = new BsOrderRefundExample();
example.createCriteria().andOrderNoEqualTo(orderNo).andRefundStatusEqualTo(OrderRefundStatusEnum.status1.getCode());
example.setOrderByClause("create_time desc");
List<BsOrderRefund> list = orderRefundMapper.selectByExample(example);
if (!list.isEmpty()){
return list.get(0);
}
return null;
}
@Override @Override
public List<BsOrderRefund> getRefundList(Map<String, Object> param) { public List<BsOrderRefund> getRefundList(Map<String, Object> param) {
BsOrderRefundExample example = new BsOrderRefundExample(); BsOrderRefundExample example = new BsOrderRefundExample();

Loading…
Cancel
Save