package com.sandu.ximon.admin.service; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.third.pay.wx.WxFastPayService; import com.sandu.ximon.admin.utils.AliPayUtils; import com.sandu.ximon.dao.domain.C3mOrder; import com.sandu.ximon.dao.enums.OrderStatus; import com.sandu.ximon.dao.enums.OrderType; import com.sandu.ximon.dao.mapper.C3mOrderMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.Date; /** * @Author liuhaonan * @Date 2022/3/10 14:24 * @Version 1.0 */ @Service @AllArgsConstructor public class C3mOrderService extends BaseServiceImpl { private final C3mOrderMapper c3mOrderMapper; private final WxFastPayService fastPayService; public boolean orderRefund(String outTradeNo, Double refundAmount, Long userId, String username) { C3mOrder orderByOutTradeNo = c3mOrderMapper.getOrderByOutTradeNo(outTradeNo); if (null == orderByOutTradeNo) { return false; } else { orderByOutTradeNo.setRefundAmount(refundAmount); return c3mOrderRefund(orderByOutTradeNo, "页面API退款", userId, username); } } private boolean c3mOrderRefund(C3mOrder C3mOrder, String msg, Long userId, String username) { // 进行退款,设置订单状态为已退款 boolean b = false; if (C3mOrder.getOrderType().equals(OrderType.ALIPAY.getCode())) { b = AliPayUtils.alipayrefund( C3mOrder.getPoleId(), C3mOrder.getOutTradeNo(), C3mOrder.getRefundAmount()); } else if (C3mOrder.getOrderType().equals(OrderType.WXPAY.getCode())) { // 进行微信退款 // b = WxPayUtils.getBean().wxRefund( // C3mOrder.getTotalAmount(), // C3mOrder.getRefundAmount(), // C3mOrder.getOutTradeNo(), // C3mOrder.getPoleId() // ); } C3mOrder.setRefundTimestamp(new Date().getTime()); C3mOrder.setRefundMsg(msg); if (b) { C3mOrder.setOrderStatus(OrderStatus.REFUND.getStatus()); c3mOrderMapper.updateRefundOrder(C3mOrder); /* logService.log( userId, ServerTask.SERVER_TASK, "C3m订单处理", null, "{ 操作者("+username+")" + "订单退款: "+C3mOrder.getOutTradeNo() +",订单总金额:"+C3mOrder.getTotalAmount() +",退款金额: "+C3mOrder.getTotalAmount()+"}");*/ return true; } else { C3mOrder.setOrderStatus(OrderStatus.REFUND_FAILED.getStatus()); c3mOrderMapper.updateRefundOrder(C3mOrder); /* logService.log( userId, ServerTask.SERVER_TASK, "C3m订单处理", null, "{ 操作者("+username+")" + "订单退款(失败): "+C3mOrder.getOutTradeNo() +",订单总金额:"+C3mOrder.getTotalAmount() +",退款金额: "+C3mOrder.getTotalAmount()+"}");*/ return false; } } }