xuhy
2024-08-26 1c8082740a9a28abe319ac5fe875cd92746c9406
Merge remote-tracking branch 'origin/master'
1 文件已重命名
16个文件已修改
173 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
@@ -48,6 +48,11 @@
            public R grantCoupon(GrantCouponDto dto) {
                return R.fail("给用户发放优惠券:"+throwable.getMessage());
            }
            @Override
            public R refund(String id) {
                return R.fail("后台退款 退回优惠券失败:"+throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -59,6 +59,11 @@
            }
            @Override
            public R refundPoints(String param) {
                return R.fail("后台兑换订单退款回退用户积分失败:"+throwable.getMessage());
            }
            @Override
            public R<List<TAppUser>> getUserByIds(List<Long> appUserIds) {
                return R.fail("根据用户id查询用户信息失败:"+throwable.getMessage());
            }
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
@@ -47,4 +47,6 @@
     */
    @PostMapping("/t-app-coupon/grantCoupon")
    R  grantCoupon(@RequestBody GrantCouponDto dto);
    @PostMapping(value = "/t-app-coupon/refund/{id}")
     R refund(@PathVariable("id") String id);
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -66,4 +66,10 @@
     */
    @GetMapping("/t-app-user/user/selectByPhone")
    R<TAppUser> selectByPhone(@RequestParam("phone") String phone);
    /**
     * 远程调用 积分兑换订单 退款回退积分
     * @return
     */
    @PostMapping(value = "/t-app-user/refundPoints/{param}")
    public R refundPoints(@PathVariable("param")String param);
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
@@ -2,6 +2,8 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.model.RefundReq;
import com.ruoyi.payment.api.model.RefundResp;
import com.ruoyi.payment.api.vo.AliPaymentReq;
import com.ruoyi.payment.api.vo.AliPaymentResp;
import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -40,6 +42,11 @@
            public void close(String outTradeNo) {
                throw new RuntimeException("关闭支付订单失败:" + throwable.getMessage());
            }
            @Override
            public R<RefundResp> refund(RefundReq dto) {
                throw new RuntimeException("支付宝退款失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import com.ruoyi.payment.api.vo.PaymentOrder;
import org.slf4j.Logger;
@@ -51,6 +52,12 @@
            public void close(String outTradeNo) {
                throw new RuntimeException("关闭支付订单失败:" + throwable.getMessage());
            }
            @Override
            public R<String> refundOrderR(WxPaymentRefundModel model) {
                return R.fail("微信退款失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
@@ -3,11 +3,14 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.payment.api.factory.WxPaymentFallbackFactory;
import com.ruoyi.payment.api.model.RefundReq;
import com.ruoyi.payment.api.model.RefundResp;
import com.ruoyi.payment.api.vo.AliPaymentReq;
import com.ruoyi.payment.api.vo.AliPaymentResp;
import com.ruoyi.payment.api.vo.AliQueryOrder;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * @author zhibing.pu
@@ -40,4 +43,9 @@
     */
    @PostMapping("/ali/close")
    void close(String outTradeNo);
    /**
     * 后台退款 远程调用
     */
    @PostMapping("/ali/refund")
    public R<RefundResp> refund(@RequestBody RefundReq dto);
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
@@ -3,8 +3,10 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.payment.api.factory.WxPaymentFallbackFactory;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import com.ruoyi.payment.api.vo.PaymentOrder;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -59,4 +61,8 @@
     */
    @PostMapping("/wx/pay/close")
    void close(String outTradeNo);
    @ApiOperation("订单退款")
    @PostMapping(value = "/wx/refundOrderR")
    public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model);
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java
File was renamed from ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/model/WxPaymentRefundModel.java
@@ -1,4 +1,4 @@
package com.ruoyi.payment.wx.model;
package com.ruoyi.payment.api.model;
import lombok.*;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -73,7 +73,17 @@
    @Resource
    private ChargingGunClient chargingGunClient;
    /**
     * 后台退款 回退优惠券使用状态
     * @return
     */
    @PostMapping(value = "/refund/{id}")
    public R refund(@PathVariable("id") String id) {
        TAppCoupon byId = tAppCouponService.getById(id);
        byId.setStatus(1);
        tAppCouponService.updateById(byId);
        return R.ok();
    }
    /**
     * 小程序扫一扫 添加车辆
     * @param dto
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -116,7 +116,20 @@
    private TInviteUserService inviteUserService;
    /**
     * 远程调用 积分兑换订单 退款回退积分
     * @return
     */
    @PostMapping(value = "/refundPoints/{param}")
    public R refundPoints(@PathVariable("param")String param) {
        String[] split = param.split("-");
        String userId = split[0];
        String points = split[1];
        TAppUser byId = appUserService.getById(userId);
        byId.setPoints(byId.getPoints()+Integer.parseInt(points));
        appUserService.updateById(byId);
        return R.ok();
    }
    @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"})
    @PostMapping(value = "/getUserInfo")
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -27,6 +27,8 @@
import com.ruoyi.common.core.utils.OrderCodeUtil;
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.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.Api;
@@ -67,6 +69,7 @@
    private GoodsClient goodsClient;
    @Resource
    private CouponClient couponClient;
    @PostMapping("/getExchangeOrderList")
    @ApiOperation(value = "列表查询", tags = {"管理后台-兑换订单"})
@@ -131,11 +134,13 @@
    public AjaxResult cancelShoppingOrder(String id) {
        TExchangeOrder byId = exchangeOrderService.getById(id);
        Long userid = tokenService.getLoginUser().getUserid();
        // todo 根据支付方式 取消订单
        byId.setCancellationId(userid);
        byId.setCancellationTime(LocalDateTime.now());
        byId.setStatus(4);
        exchangeOrderService.updateById(byId);
        // 回退积分
        Integer points = byId.getPoints();
        appUserClient.refundPoints(byId.getAppUserId()+"-"+points);
        return AjaxResult.success();
    }
    @GetMapping("/consignerShoppingOrder")
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -3,6 +3,7 @@
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;
@@ -18,6 +19,11 @@
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;
@@ -111,6 +117,12 @@
    }
    @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) {
@@ -123,9 +135,40 @@
        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);
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
@@ -3,9 +3,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.payment.ali.config.AliProperties;
import com.ruoyi.payment.ali.v2.AppletPayUtil;
import com.ruoyi.payment.api.model.PaymentReq;
import com.ruoyi.payment.api.model.PaymentResp;
import com.ruoyi.payment.api.model.QueryResp;
import com.ruoyi.payment.api.model.*;
import com.ruoyi.payment.api.vo.AliPaymentReq;
import com.ruoyi.payment.api.vo.AliPaymentResp;
import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -78,6 +76,13 @@
            throw new RuntimeException("关闭支付宝订单失败");
        }
    }
    /**
     * 后台退款 远程调用
     */
    @PostMapping("/refund")
    public R<RefundResp> refund(@RequestBody RefundReq dto){
        return R.ok(appletPayUtil.refund(dto));
    }
    
    
    
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -5,7 +5,7 @@
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.payment.api.vo.PaymentOrder;
import com.ruoyi.payment.wx.enums.RefundEnum;
import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
import com.ruoyi.payment.wx.utils.WxV3Pay;
import io.swagger.annotations.Api;
@@ -79,7 +79,30 @@
        // TODO 退款业务处理
        return AjaxResult.success();
    }
    /**
     * 微信v3支付-订单退款 远程调用
     *
     * @return
     */
    @ApiOperation("订单退款")
    @PostMapping(value = "refundOrderR")
    public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model) {
        Map<String, Object> result = wxV3Pay.refund(model);
        log.info("退款结果:{}", result);
        // 微信支付退款单号
        String refund_id = result.get("refund_id").toString();
        // 商户退款单号
        String out_refund_no = result.get("out_refund_no").toString();
        // 微信支付订单号
        String transaction_id = result.get("transaction_id").toString();
        // 商户订单号 tradeNo
        String out_trade_no = result.get("out_trade_no").toString();
        // 退款成功时间
        String success_time = Objects.nonNull(result.get("success_time")) ? result.get("success_time").toString() : null;
        // 退款状态 RefundEnum
        String status = result.get("status").toString();
        return R.ok(status);
    }
    /**
     * 支付回调
     */
@@ -144,6 +167,12 @@
            // 时间不对的话,可以调用  WxTimeUtils.toRfc3339Date(success_time)转换一下
            String success_time = params.get("success_time").toString();
            if (tradeState.equals(RefundEnum.SUCCESS.name())) {
                String substring = out_refund_no.substring(0, 2);
                switch (substring){
                    case "GW":
                        break;
                }
                // TODO 退款成功处理
                wxV3Pay.ack();
            } else {
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java
@@ -4,7 +4,7 @@
import com.ruoyi.common.core.utils.WebUtils;
import com.ruoyi.payment.wx.model.WxCloseOrderModel;
import com.ruoyi.payment.wx.model.WxPaymentInfoModel;
import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java
@@ -7,7 +7,7 @@
import com.ruoyi.payment.wx.model.WeixinProperties;
import com.ruoyi.payment.wx.model.WxCloseOrderModel;
import com.ruoyi.payment.wx.model.WxPaymentInfoModel;
import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;