puzhibing
2024-09-29 c44e660304d6599d90e23da0e52f2c734a81c2ec
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -20,6 +20,8 @@
import com.ruoyi.order.api.query.ShoppingOrderQuery;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.service.TShoppingOrderService;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.feignClient.CouponClient;
import com.ruoyi.other.api.feignClient.GoodsClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
@@ -116,8 +118,22 @@
         TAppUserAddress data = appUserClient.getAddressById(byId.getAppUserAddressId()).getData();
         if (data != null) {
            byId.setReceivingName(data.getName() + "-" + data.getPhone());
            byId.setReceivingAddress(data.getAddress());
            byId.setReceivingAddress(data.getProvince()+data.getCity()
                  +(data.getDistrict()==null?"":data.getDistrict())
                  +(data.getAddress()==null?"":data.getAddress())
                  +(data.getHouseNumber()==null?"":data.getHouseNumber()));
         }
      }
      if (byId.getOrderType()==1){
         TGoods data = goodsClient.getGoodsById(byId.getGoodsId()).getData();
         if (data!=null){
            byId.setName(data.getName());
         }
      }else {
       TCoupon data = couponClient.getCouponById1(byId.getCouponId()).getData();
       if (data!=null){
          byId.setName(data.getName());
       }
      }
      return AjaxResult.success(byId);
   }
@@ -144,9 +160,11 @@
            WxPaymentRefundModel wxPaymentRefundModel = new WxPaymentRefundModel();
            wxPaymentRefundModel.setTransaction_id(byId.getSerialNumber());
            wxPaymentRefundModel.setOut_trade_no(byId.getCode());
            wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GW"));
            wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GWTK"));
            wxPaymentRefundModel.setReason("后台购物订单退款");
            wxPaymentRefundModel.setNotify_url("/payment/wx/refund/notify");
            // todo 部署到线上之后写回调地址
//            wxPaymentRefundModel.setNotify_url("");
            String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
            if (string.contains(".")) {
               string = string.substring(0, string.indexOf("."));
@@ -154,6 +172,7 @@
            int i = Integer.parseInt(string);
            WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount();
            refundAmount.setTotal(i);
            refundAmount.setCurrency("CNY");
            refundAmount.setRefund(i);
            wxPaymentRefundModel.setAmount(refundAmount);
            wxPaymentClient.refundOrderR(wxPaymentRefundModel);
@@ -162,20 +181,21 @@
            // 支付宝
            RefundReq refundReq = new RefundReq();
            refundReq.setOutTradeNo(byId.getSerialNumber());
            String gw = OrderCodeUtil.getOrderCode("GW");
            String gw = OrderCodeUtil.getOrderCode("GWTK");
            refundReq.setOutRequestNo(gw);
            refundReq.setRefundAmount(byId.getPaymentAmount().toString());
            refundReq.setRefundReason("后台退款");
            refundReq.setRefundReason("后台购物订单退款");
            RefundResp data = aliPaymentClient.refund(refundReq).getData();
            if (data != null) {
               // 退款成功 回退优惠券
//               byId.setStatus(4);
               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());
                  shoppingOrderService.updateById(byId);
               }
            }
            break;
@@ -210,11 +230,11 @@
   public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum() {
      Long userId = tokenService.getLoginUserApplet().getUserId();
      long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
            .eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId));
            .eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
      long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
            .eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId));
            .eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
      long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
            .eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId));
            .eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
      Map<String, Object> map = new HashMap<>();
      map.put("dfh", dfh);
      map.put("dsh", dsh);
@@ -245,6 +265,7 @@
         return AjaxResult.error("订单已取消,不允许操作。");
      }
      shoppingOrder.setStatus(3);
      shoppingOrder.setReceivingTime(LocalDateTime.now());
      shoppingOrderService.updateById(shoppingOrder);
      return AjaxResult.success();
   }
@@ -260,15 +281,11 @@
    * 商城订单取消微信退款回调
    */
   @PostMapping("/cancelShoppingOrderWxRefund")
   public void cancelShoppingOrderWxRefund(HttpServletRequest request) {
      WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
      if (null != data) {
         String out_refund_no = data.getOut_refund_no();
         String refund_id = data.getRefund_id();
         String tradeState = data.getTradeState();
         String success_time = data.getSuccess_time();
         shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
      }
   public void cancelShoppingOrderWxRefund(@RequestParam("out_refund_no") String out_refund_no,
                                           @RequestParam("refund_id") String refund_id,
                                           @RequestParam("tradeState") String tradeState,
                                           @RequestParam("success_time") String success_time) {
      shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
   }