| | |
| | | package com.ruoyi.order.controller; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | |
| | | |
| | |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.order.api.model.TChargingOrderRefund; |
| | | import com.ruoyi.order.api.model.TExchangeOrder; |
| | | import com.ruoyi.order.api.model.TShoppingOrder; |
| | | import com.ruoyi.order.api.model.TShoppingOrderRefund; |
| | | import com.ruoyi.order.api.query.ShoppingOrderQuery; |
| | | import com.ruoyi.order.dto.*; |
| | | import com.ruoyi.order.service.TShoppingOrderRefundService; |
| | | import com.ruoyi.order.service.TShoppingOrderService; |
| | | import com.ruoyi.other.api.domain.TCoupon; |
| | | import com.ruoyi.other.api.domain.TGoods; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private AppCouponClient appCouponClient; |
| | | @Resource |
| | | private SysUserClient sysUserClient; |
| | | |
| | | @Resource |
| | | private TShoppingOrderRefundService shoppingOrderRefundService; |
| | | /** |
| | | * 远程管理后台取消订单后退款回调 |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping(value = "/shoppingOrderWxRefund") |
| | | public void shoppingOrderWxRefund(@RequestParam("out_trade_no") String out_refund_no, |
| | | @RequestParam("out_trade_no") String refund_id, |
| | | @RequestParam("out_trade_no") String tradeState, |
| | | @RequestParam("out_trade_no") String success_time){ |
| | | if("SUCCESS".equals(tradeState)){ |
| | | TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no)); |
| | | one.setRefundSerialNumber(refund_id); |
| | | one.setRefundStatus(2); |
| | | one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE"))); |
| | | shoppingOrderRefundService.updateById(one); |
| | | TShoppingOrder byId = shoppingOrderService.getById(one.getShoppingOrderId()); |
| | | byId.setStatus(4); |
| | | shoppingOrderService.updateById(byId); |
| | | if (byId.getAppCouponId() != null) { |
| | | appCouponClient.refund(byId.getAppCouponId().toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/getShoppingOrderList") |
| | | @ApiOperation(value = "列表查询", tags = {"管理后台-购物订单"}) |
| | |
| | | shoppingOrderService.removeBatchByIds(Arrays.asList(ids.split(","))); |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/cancelShoppingOrder") |
| | | @ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"}) |
| | | public AjaxResult cancelShoppingOrder(String id) { |
| | |
| | | byId.setCancellationId(userid); |
| | | byId.setCancellationTime(LocalDateTime.now()); |
| | | byId.setStatus(4); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | TShoppingOrderRefund tShoppingOrderRefund = new TShoppingOrderRefund(); |
| | | tShoppingOrderRefund.setPayTime(byId.getPayTime()); |
| | | tShoppingOrderRefund.setPayCode(byId.getSerialNumber()); |
| | | tShoppingOrderRefund.setPayAmount(byId.getPaymentAmount()); |
| | | tShoppingOrderRefund.setPayType(1); |
| | | tShoppingOrderRefund.setShoppingOrderId(byId.getId()); |
| | | tShoppingOrderRefund.setRefundAmount(byId.getPaymentAmount()); |
| | | tShoppingOrderRefund.setRefundStatus(1); |
| | | tShoppingOrderRefund.setCode("GWF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue()); |
| | | tShoppingOrderRefund.setRefundTitle("后台取消订单"); |
| | | tShoppingOrderRefund.setRefundContent("后台取消订单"); |
| | | tShoppingOrderRefund.setRefundReason("后台取消订单"); |
| | | tShoppingOrderRefund.setRefundRemark("全额退款"); |
| | | tShoppingOrderRefund.setRefundTotalAmount(byId.getPaymentAmount()); |
| | | switch (byId.getPaymentType()) { |
| | | case 1: |
| | | // 微信 |
| | |
| | | wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GWTK")); |
| | | wxPaymentRefundModel.setReason("后台购物订单退款"); |
| | | wxPaymentRefundModel.setNotify_url("/payment/wx/refund/notify"); |
| | | |
| | | // todo 部署到线上之后写回调地址 |
| | | String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString(); |
| | | if (string.contains(".")) { |
| | | string = string.substring(0, string.indexOf(".")); |
| | |
| | | refundAmount.setCurrency("CNY"); |
| | | refundAmount.setRefund(i); |
| | | wxPaymentRefundModel.setAmount(refundAmount); |
| | | wxPaymentClient.refundOrderR(wxPaymentRefundModel); |
| | | R<String> stringR = wxPaymentClient.refundOrderR(wxPaymentRefundModel); |
| | | if(200 == stringR.getCode()){ |
| | | shoppingOrderRefundService.save(tShoppingOrderRefund); |
| | | } |
| | | break; |
| | | case 2: |
| | | // 支付宝 |
| | | RefundReq refundReq = new RefundReq(); |
| | | refundReq.setOutTradeNo(byId.getSerialNumber()); |
| | | String gw = OrderCodeUtil.getOrderCode("GWTK"); |
| | | String gw = OrderCodeUtil.getOrderCode("GWF"); |
| | | refundReq.setOutRequestNo(gw); |
| | | refundReq.setRefundAmount(byId.getPaymentAmount().toString()); |
| | | refundReq.setRefundReason("后台购物订单退款"); |
| | | RefundResp data = aliPaymentClient.refund(refundReq).getData(); |
| | | if (data != null) { |
| | | // 退款成功 回退优惠券 |
| | | byId.setStatus(4); |
| | | SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); |
| | | TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, data.getOutTradeNo())); |
| | | one.setRefundSerialNumber(data.getTradeNo()); |
| | | one.setRefundStatus(2); |
| | | one.setRefundTime(LocalDateTime.parse(sdf1.format(new Date()), DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE"))); |
| | | shoppingOrderRefundService.updateById(one); |
| | | if (byId.getAppCouponId() != null) { |
| | | // 退款成功 回退优惠券 |
| | | appCouponClient.refund(byId.getAppCouponId().toString()); |
| | | byId.setRefundCode(gw); |
| | | byId.setRefundAmount(byId.getPaymentAmount()); |
| | | byId.setRefundStatus(2); |
| | | byId.setRefundSerialNumber(data.getTradeNo()); |
| | | shoppingOrderService.updateById(byId); |
| | | } |
| | | byId.setRefundCode(gw); |
| | | byId.setRefundAmount(byId.getPaymentAmount()); |
| | | byId.setRefundStatus(2); |
| | | byId.setRefundSerialNumber(data.getTradeNo()); |
| | | shoppingOrderService.updateById(byId); |
| | | } |
| | | break; |
| | | } |