| | |
| | | import java.time.LocalDateTime; |
| | | |
| | | |
| | | import com.ruoyi.account.api.feignClient.AppCouponClient; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.model.TAppUserAddress; |
| | | import com.ruoyi.common.core.domain.R; |
| | |
| | | import com.ruoyi.order.service.TShoppingOrderService; |
| | | import com.ruoyi.other.api.feignClient.CouponClient; |
| | | import com.ruoyi.other.api.feignClient.GoodsClient; |
| | | import com.ruoyi.payment.api.feignClient.AliPaymentClient; |
| | | import com.ruoyi.payment.api.feignClient.WxPaymentClient; |
| | | import com.ruoyi.payment.api.model.RefundReq; |
| | | import com.ruoyi.payment.api.model.RefundResp; |
| | | import com.ruoyi.payment.api.model.WxPaymentRefundModel; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import io.swagger.annotations.Api; |
| | |
| | | } |
| | | @Resource |
| | | private TokenService tokenService; |
| | | @Resource |
| | | private AliPaymentClient aliPaymentClient; |
| | | @Resource |
| | | private WxPaymentClient wxPaymentClient; |
| | | @Resource |
| | | private AppCouponClient appCouponClient; |
| | | @GetMapping("/cancelShoppingOrder") |
| | | @ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"}) |
| | | public AjaxResult cancelShoppingOrder(String id) { |
| | |
| | | switch (byId.getPaymentType()){ |
| | | case 1: |
| | | // 微信 |
| | | WxPaymentRefundModel wxPaymentRefundModel = new WxPaymentRefundModel(); |
| | | wxPaymentRefundModel.setTransaction_id(byId.getSerialNumber()); |
| | | wxPaymentRefundModel.setOut_trade_no(byId.getCode()); |
| | | wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GW")); |
| | | // todo 部署到线上之后写回调地址 |
| | | // wxPaymentRefundModel.setNotify_url(""); |
| | | String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString(); |
| | | int i = Integer.parseInt(string); |
| | | WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount(); |
| | | refundAmount.setTotal(i); |
| | | refundAmount.setRefund(i); |
| | | wxPaymentRefundModel.setAmount(refundAmount); |
| | | wxPaymentClient.refundOrderR(wxPaymentRefundModel); |
| | | break; |
| | | case 2: |
| | | // 支付宝 |
| | | RefundReq refundReq = new RefundReq(); |
| | | refundReq.setOutTradeNo(byId.getSerialNumber()); |
| | | String gw = OrderCodeUtil.getOrderCode("GW"); |
| | | refundReq.setOutRequestNo(gw); |
| | | refundReq.setRefundAmount(byId.getPaymentAmount().toString()); |
| | | refundReq.setRefundReason("后台退款"); |
| | | RefundResp data = aliPaymentClient.refund(refundReq).getData(); |
| | | if (data!=null){ |
| | | // 退款成功 回退优惠券 |
| | | // byId.setStatus(4); |
| | | if (byId.getAppCouponId()!=null){ |
| | | appCouponClient.refund(byId.getAppCouponId().toString()); |
| | | byId.setRefundCode(gw); |
| | | byId.setRefundAmount(byId.getPaymentAmount()); |
| | | byId.setRefundStatus(2); |
| | | byId.setRefundSerialNumber(data.getTradeNo()); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | shoppingOrderService.updateById(byId); |