无关风月
2024-10-14 b60e601d62c0e2d5c4fd1df9f12fa09f2bf99987
调试支付
1个文件已添加
6个文件已修改
310 ■■■■ 已修改文件
xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/vo/OrderDetailVO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/UserChildDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/utils/JuHeFuUtil.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWalletRecordController.java 143 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java
@@ -136,6 +136,9 @@
    @ApiModelProperty(value = "邀请人id")
    @TableField("invite_user_id")
    private Long inviteUserId;
    @ApiModelProperty(value = "绑定邀请人时间")
    @TableField("invite_user_time")
    private LocalDateTime inviteUserTime;
    @ApiModelProperty(value = "余额")
    @TableField("balance")
xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/vo/OrderDetailVO.java
@@ -33,9 +33,11 @@
    private LocalDateTime paymentTime;
    @ApiModelProperty(value = "流水单号")
    private String payOrderNo;
    @ApiModelProperty(value = "提现方式")
    private String withdraw;
    @ApiModelProperty(value = "备注")
    @ApiModelProperty(value = "提现方式 提现方式 1=银行卡提现  2=微信提现 3=支付宝提现")
    private Integer withdrawType;
    @ApiModelProperty(value = "充值方式 提现方式 1=微信  2=支付宝 3=余额 4=苹果内购")
    private Integer payType;
    @ApiModelProperty(value = "来源备注")
    private String remark;
    @ApiModelProperty(value = "下级用户名称 当类型为佣金的时候展示")
    private String userName;
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/UserChildDTO.java
New file
@@ -0,0 +1,26 @@
package com.xinquan.user.api.domain.dto;
import com.xinquan.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author mitao
 * @date 2024/9/7
 */
@Data
@ApiModel(value = "管理后台下级用户DTO")
public class UserChildDTO extends BasePage {
    @ApiModelProperty(value = "用户昵称")
    private String nickName;
    @ApiModelProperty(value = "用户手机号")
    private String cellPhone;
    @ApiModelProperty(value = "用户状态 1=正常 2=冻结 3=注销")
    private String userStatus;
    @ApiModelProperty(value = "操作时间 2020-11-11 - 2021-11-11")
    private String time;
    @ApiModelProperty(value = "用户uid")
    private String uid;
}
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
@@ -1,6 +1,7 @@
package com.xinquan.order.controller.client;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.BeanUtils;
@@ -25,8 +26,14 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -145,6 +152,12 @@
            throw new RuntimeException(e);
        }
    }
    @ResponseBody
    @PostMapping("/testCallback")
    public void wechatPaymentGameCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.err.println("进入回调");
    }
    /**
     * 远程调用 根据用户id 查询充值金额
     */
@@ -185,6 +198,7 @@
                    case 3:
                        one.setRemark("苹果内购");
                }
                one.setPayOrderNo(two.getPayOrderNo());
            }
            if (one.getCommissionId()!=null){
                switch (one.getOrderFrom()){
@@ -200,6 +214,7 @@
                        one.setRemark("充值");
                }
            }
            return R.ok(one);
        }
        return R.ok();
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/utils/JuHeFuUtil.java
@@ -10,14 +10,19 @@
import com.xinquan.common.core.utils.StringUtils;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
 * 桔禾付支付工具类
@@ -29,15 +34,15 @@
    private static Logger logger = LoggerFactory.getLogger(JuHeFuUtil.class);
    // 商户RSA私钥 TODO
    private static final String MERCHANT_PRIVATE_KEY = "";
    private static final String MERCHANT_PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMQPsMj4OYgjHFWS8wDIQOoMeAx9Ad1wKfIks7Oz5Kw8EVnmZ9o1ZY14goMMr1vJo/XxLLYXDvwj+EhV4MqT6ji2QDVqlhA4f6WFFmKOsvxgNnu0zAysfDpVpYihWC5uOf4ece9fWVci8DYFeXcawYGNB6GrJuo186sqMYwkE90/AgMBAAECgYAnMvfmhnKCPHraxSGeo2sPIGUUIh4wVs+cIShoomvy36OcdMuIvipKqbB2YR/iWyNT9d85nMybLtniJIFoH0CxshmLH/yg31vYhyLfVyih1RVFBRYuDMnIjvmNTBgXM/9vaAwkzonIQnoFoLVjxK2+JIFY+86Iak1Cv/vEi1vaSQJBAPRwebK51NBfrnO+2HY9nuDvbZbSx9I8uR+Yw/ebDUmbow/Dacibl0Hha+fw6cy5I3Rlm2kk5fKXIDIkwyLVq80CQQDNVXuQ8kXrDR0WjPcYPnwKNPEd0EHOKFiT7OqwoMFUUROyajO2nWs80eiZYZ+6M6+LEvYT6KcSiyiIwREnh1k7AkBV3BwjNzsVZkZ0yZhnEAX6pJ8t1yPxKPstqg9Lrd7g+BYyt0U0/dIHhhLNCcZV7sIRZI9OQ3Ox3nukoV0Zo0wRAkBT1eEbry+I5tPHj0qb5Xczm6YOrCcSCzsPOp4f+6Kz0F6ga+gtWVyden7jkQ5sMgosWFOMkWMVmSe1nk5ou0RdAkEAzfJJavQgu+BGQwqS1EojlXKe0GmpbQu+HwuDKcHmju0P2qGQ2yPfvURg1dMp7tmBM8AlVJhgzkNuyUAN1J841w==";
    // 平台RSA公钥 TODO
    private static final String PLAT_PUBLIC_KEY = "";
    private static final String PLAT_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOKBBFXirWIJth+SNJCY4mhbATbL60sKV66bRixHMVz8vpBqONio9X6A+Pm9LNutBe+hLpI1BMmFJk3Mb1/QEcklWptRGgHqIrBxR4b19qc/2/pSxyqlpaifYJFZhOg2+OcQ/fqpAmhNXN5uc1pcYvbvWTam0j+6+nBNQeAAku5QIDAQAB";
    // 应用的app_id TODO
    private static final String APP_ID = "";
    private static final String APP_ID = "app_10024101201";
    // 商户id TODO
    private static final String MER_ID = "";
    private static final String MER_ID = "1120241012072667";
    // AES密钥 TODO
    private static final String AES_KEY = "";
    private static final String AES_KEY = "cb0a181ac97395c6942be19315fc0727";
    // 创建用户接口
    private static final String CREATE_USER_INTERFACE = "/api/member/create_user_a";
    // 创建支付订单
@@ -46,7 +51,7 @@
    private static final String PAYMENT_REFUND_INTERFACE = "/api/payment/payment_refund";
    private static final String MERCHANT_PAY_INTERFACE = "/api/account/merchant_pay";
    // 接口地址 TODO
    private static final String BASE_URL = "";
    private static final String BASE_URL = "http://paytest.juhefu.com/";
    // 支付宝支付渠道
    private static final String PAY_CHANNEL_ALIPAY = "alipay_qr";
    // 微信支付渠道
@@ -92,6 +97,11 @@
        return false;
    }
    public static void main(String[] args) throws Exception {
        createPayment("MX123aaa9999911",1, "0.01",
                "测试商品", "测试商品描述",
                "221.182.45.100", "oG50n6Vf0JNid5DOg0brcAnZ0T4s", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/testCallback");
    }
    /**
     * 创建支付订单
     *
@@ -113,7 +123,6 @@
        JSONObject expand = new JSONObject();
        data.put("order_no", orderNo);
        data.put("app_id", APP_ID);
        data.put("mer_id", MER_ID);
        if (payChannel == 1) {
            data.put("pay_channel", PAY_CHANNEL_ALIPAY);
        } else {
@@ -134,16 +143,22 @@
        body.put("sign", sign(JSONObject.toJSONString(data)));
        body.put("reqCipher",
                EncryptUtils.aes256ECBPkcs7PaddingEncrypt(JSONObject.toJSONString(data), AES_KEY));
        body.put("reqTime", DateUtils.dateTimeNow("yyyyMMddHHmmssfff"));
        body.put("reqTime", DateUtils.dateTimeNow("yyyyMMddHHmmsssss"));
        String result = sendPost(BASE_URL + CREATE_PAYMENT_INTERFACE, body);
        JSONObject resJsonObject = JSONObject.parseObject(result);
        if (resJsonObject.getString("status").equals("failed")) {
            throw new ServiceException(resJsonObject.getString("error_msg"));
        }
        if (resJsonObject.getString("status").equals("succeeded")) {
            return resJsonObject.getJSONObject("expand");
        }
        return null;
        System.err.println(resJsonObject);
        String string = resJsonObject.getString("resCipher");
        String decrypt = decrypt(string);
        System.err.println(decrypt);
        JSONObject jsonObject = JSONObject.parseObject(decrypt);
//        if (resJsonObject.getString("status").equals("failed")) {
//            throw new ServiceException(resJsonObject.getString("error_msg"));
//        }
//        if (resJsonObject.getString("status").equals("succeeded")) {
//            return resJsonObject.getJSONObject("expand");
//        }
        return jsonObject.getJSONObject("expand");
    }
    /**
@@ -198,7 +213,7 @@
        body.put("sign", sign(JSONObject.toJSONString(data)));
        body.put("reqCipher",
                EncryptUtils.aes256ECBPkcs7PaddingEncrypt(JSONObject.toJSONString(data), AES_KEY));
        body.put("reqTime", DateUtils.dateTimeNow("yyyyMMddHHmmssfff"));
        body.put("reqTime", DateUtils.dateTimeNow("yyyyMMddHHmmss"));
        String result = sendPost(BASE_URL + MERCHANT_PAY_INTERFACE, body);
        JSONObject resJsonObject = JSONObject.parseObject(result);
        if (resJsonObject.getString("status").equals("succeeded")) {
@@ -233,6 +248,7 @@
    }
    /**
     * RSA私钥签名:签名方式SHA256WithRSA
     *
@@ -243,7 +259,6 @@
    public static String sign(String data) {
        // 先对该json对象数据按照参数字典顺序(参数名ASCII码从小到大排序,参数名区分大小写)排序生成字符串,再进行加签和验签。
        data = JSON.toJSONString(JSONObject.parseObject(data, TreeMap.class));
        // Base64 --> Key
        try {
            byte[] bytes = Base64.getDecoder().decode(MERCHANT_PRIVATE_KEY);
@@ -261,5 +276,33 @@
            return null;
        }
    }
    public static String decrypt(String strToDecrypt) {
        try {
        SecretKeySpec secretKey = new SecretKeySpec(AES_KEY.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
    } catch (Exception e) {
            System.out.println("Error while decrypting: " + e.toString());
    }
        return null;}
//    public static boolean verify(String data, String publicKeyStr) {
//        try {
//            // 解码公钥
//            byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyStr);
//            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
//            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
//            PublicKey publicKey = keyFactory.generatePublic(keySpec);
//            // 验证签名
//            Signature signature = Signature.getInstance("SHA256WithRSA");
//            signature.initVerify(publicKey);
//            signature.update(data.getBytes("UTF-8"));
//
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
}
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
@@ -95,21 +95,12 @@
    @Resource
    private RemoteUserService remoteUserService;
    public static void main(String[] args) {
//        LocalDateTime dateTime = LocalDateTime.now();
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//        String formattedDateTime = dateTime.format(formatter);
//        System.err.println(formattedDateTime);
        // 收件人电子邮箱,TODO 换成自己的收件箱
        String to = "443237572@qq.com";
        // 发件人电子邮箱,TODO 换成自己的发件箱
        String from = "13281306557@163.com";
        // 指定发送邮件的主机为
        String host = "smtp.163.com";
        // 获取系统属性
        //Properties properties = System.getProperties();
        Properties properties = new Properties();
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);
@@ -142,37 +133,30 @@
            InternetAddress toMail2 = new InternetAddress("443237572@qq.com");
            //发一个邮箱
//            message.setRecipient(Message.RecipientType.TO, toMail);
            //发多个邮箱
            Address[] allRecipients = {toMail, toMail2};
            message.setRecipients(Message.RecipientType.TO, allRecipients);
            // Set Subject: 邮件主体
            message.setSubject("明星电力");
            // 设置消息体
            message.setSentDate(new Date());
            // 指定为混合关系
            MimeMultipart msgMultipart = new MimeMultipart("mixed");
            message.setContent(msgMultipart);
            // 邮件信息组装
            //组装的顺序非常重要,一定要先组装文本域,再组装文件
            MimeBodyPart htmlPart = new MimeBodyPart();
            // 组装内容
            htmlPart.setContent("This is message content", "text/html;charset=UTF-8");
            msgMultipart.addBodyPart(htmlPart);
            // 组装附件
            MimeBodyPart filePart = new MimeBodyPart();
            String imageUrl = "http://221.182.45.100:8090/2024-10-10/04-18-09-0466d831fc6365571080.pdf";
            String imageUrl = "https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/xinquan/b176cf9af35d4773a276e55b7afe3b63.mp4";
            try {
                // 下载数据
                URL url = new URL(imageUrl);
                InputStream inputStream = url.openStream();
                byte[] imageBytes = IOUtils.toByteArray(inputStream);
                // 创建临时文件
                // 截取imageUrl后缀名
                String fileExtension = imageUrl.substring(imageUrl.lastIndexOf("."));
@@ -180,7 +164,6 @@
                try (FileOutputStream fos = new FileOutputStream(tempFile)) {
                    fos.write(imageBytes);
                }
                // 创建 FileDataSource
                FileDataSource fileDataSource = new FileDataSource(tempFile);
                System.out.println("FileDataSource created: " + fileDataSource.getName());
@@ -650,19 +633,26 @@
        // 查询登录用户邀请了哪些人
        List<Long> collect = page.getRecords().stream().map(AppUser::getId).collect(Collectors.toList());
        if (collect.isEmpty())return R.ok(PageDTO.empty(page));
        StringBuilder stringBuilder = new StringBuilder();
        collect.forEach(id -> stringBuilder.append(id).append(","));
        // 去除最后一位
        StringBuilder stringBuilder1 = stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        String[] split = stringBuilder1.toString().split(",");
        for (int i = 0; i < page.getRecords().size(); i++) {
            AppUser appUser = page.getRecords().get(i);
            appUser.setMoney(new BigDecimal(split[i]));
            // 查询该给用户带来收益
            List<AppUserWalletRecord> list = appUserWalletRecordService.lambdaQuery().eq(AppUserWalletRecord::getAppUserId, userId)
                    .eq(AppUserWalletRecord::getChildAppUserId,appUser.getUserId()).list();
            BigDecimal bigDecimal = new BigDecimal("0");
            for (AppUserWalletRecord appUserWalletRecord : list) {
                if (appUserWalletRecord.getAmount()!=null && appUserWalletRecord.getChangeType() == 1){
                    bigDecimal = bigDecimal.add(appUserWalletRecord.getAmount());
                }
            }
            appUser.setMoney(bigDecimal);
        }
        // 根据佣金金额 从大到小排序
        page.getRecords().sort((o1, o2) -> o2.getMoney().compareTo(o1.getMoney()));
        return R.ok(PageDTO.of(page, InviteRankListVO.class));
    }
    @Resource
    private AppUserWalletRecordService appUserWalletRecordService;
    /**
     * 爱心助力榜单-分页
     *
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWalletRecordController.java
@@ -12,15 +12,19 @@
import com.xinquan.order.api.feign.RemoteOrderService;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.system.api.domain.AppUserWalletRecord;
import com.xinquan.system.api.domain.AppUserWithdraw;
import com.xinquan.system.api.domain.vo.InviteRankListVO;
import com.xinquan.system.api.domain.vo.OrderDetailVO;
import com.xinquan.system.api.domain.vo.OrderListVO;
import com.xinquan.user.api.domain.dto.UserBalanceDetailDTO;
import com.xinquan.user.api.domain.dto.UserChildDTO;
import com.xinquan.user.service.AppUserService;
import com.xinquan.user.service.AppUserWalletRecordService;
import com.xinquan.user.service.AppUserWithdrawService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.expression.spel.ast.OpNE;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@@ -45,7 +49,48 @@
    @Resource
    private AppUserWalletRecordService walletRecordService;
    @Resource
    private AppUserWithdrawService appUserWithdrawService;
    @Resource
    private AppUserWalletRecordService appUserWalletRecordService;
    @Resource
    private RemoteOrderService remoteOrderService;
    @PostMapping("/childUserList")
    @ApiOperation(value = "用户详情-下级用户列表",tags = "管理后台-用户管理")
    public R<PageDTO<AppUser>> childUserList(@RequestBody UserChildDTO dto) {
        String startTime = null;
        String endTime = null;
        if (org.springframework.util.StringUtils.hasLength(dto.getTime())){
            String[] split = dto.getTime().split(" - ");
            startTime = split[0]+"00:00:00";
            endTime = split[1]+"23:59:59";
        }
        String userId = dto.getUid();
        LambdaQueryWrapper<AppUser> appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
        appUserWalletRecordLambdaQueryWrapper.between(startTime!=null,BaseModel::getCreateTime,startTime,endTime);
        appUserWalletRecordLambdaQueryWrapper.eq(AppUser::getInviteUserId, userId);
        appUserWalletRecordLambdaQueryWrapper.like(StringUtils.hasLength(dto.getCellPhone()),AppUser::getCellPhone,dto.getCellPhone());
        appUserWalletRecordLambdaQueryWrapper.like(StringUtils.hasLength(dto.getNickName()),AppUser::getNickname,dto.getNickName());
        appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime);
        Page<AppUser> page = appUserService
                .page(new Page<>(dto.getPageCurr(), dto.getPageSize()),appUserWalletRecordLambdaQueryWrapper);
        if (CollUtils.isEmpty(page.getRecords())){
            PageDTO<AppUser> empty = PageDTO.empty(page);
            return R.ok(empty);
        }
        for (AppUser record : page.getRecords()) {
            // 查询该用户带来收益
            List<AppUserWalletRecord> list = appUserWalletRecordService.lambdaQuery().eq(AppUserWalletRecord::getAppUserId, record.getId())
                    .eq(AppUserWalletRecord::getChildAppUserId, record.getUserId()).list();
            BigDecimal bigDecimal = new BigDecimal("0");
            for (AppUserWalletRecord appUserWalletRecord : list) {
                if (appUserWalletRecord.getAmount()!=null && appUserWalletRecord.getChangeType() == 1){
                    bigDecimal = bigDecimal.add(appUserWalletRecord.getAmount());
                }
                record.setMoney(bigDecimal);
            }
        }
        return R.ok(PageDTO.of(page, AppUser.class));
    }
    @PostMapping("/userBalanceList")
    @ApiOperation(value = "用户详情-余额明细",tags = "管理后台-用户管理")
    public R<PageDTO<OrderListVO>> userBalanceList(@RequestBody UserBalanceDetailDTO dto) {
@@ -114,33 +159,34 @@
        AppUserWalletRecord byId = walletRecordService.getById(uid);
        if (byId.getOrderId()!=null){
            if (byId.getReason().equals("提现")){
                // 远程查询提现记录
                AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId());
                orderDetailVO.setType("提现");
                orderDetailVO.setPayOrderNo(byId1.getSerialNo());
                orderDetailVO.setWithdrawType(byId1.getWithdrawType());
                orderDetailVO.setAmount(byId1.getAmount());
                orderDetailVO.setChangeType(byId.getChangeType());
                orderDetailVO.setPaymentTime(byId1.getUpdateTime());
            }else if (byId.getReason().equals("充值")){
                Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData();
                if (byId.getChildAppUserId() == null && one!=null){
                    if (one.getOrderFrom()!=null){
                        switch (one.getOrderFrom()){
                            case 1:
                                orderDetailVO.setType("购买疗愈");
                                break;
                            case 2:
                                orderDetailVO.setType("购买课程");
                                break;
                            case 3:
                                orderDetailVO.setType("购买会员");
                                break;
                            case 4:
                                orderDetailVO.setType("充值");
                                break;
                        }
                    }
                    orderDetailVO.setPayType(one.getPayType());
                    orderDetailVO.setPayOrderNo(one.getPayOrderNo());
                    orderDetailVO.setRemark(one.getRemark());
                    orderDetailVO.setChangeType(byId.getChangeType());
                    orderDetailVO.setAmount(byId.getAmount());
                    orderDetailVO.setPaymentTime(one.getPaymentTime());
                    return R.ok(orderDetailVO);
                }else if (byId.getChildAppUserId()!=null && one!=null){
                }
            }else if (byId.getReason().equals("分佣收益")){
                Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData();
                if (byId.getChildAppUserId()!=null && one!=null){
                    orderDetailVO.setType("分佣");
                    orderDetailVO.setPayOrderNo(one.getPayOrderNo());
                    orderDetailVO.setPaymentTime(byId.getCreateTime());
                    orderDetailVO.setChangeType(byId.getChangeType());
                    orderDetailVO.setAmount(byId.getAmount());
                    orderDetailVO.setRemark(one.getRemark());
                    if (one.getCommissionId()!=null){
                        AppUser appUserById = appUserService.getById(one.getCommissionId());
                        orderDetailVO.setUserName(appUserById.getNickname());
@@ -148,12 +194,19 @@
                    }
                    return R.ok(new OrderDetailVO());
                }
            }else if (byId.getReason().equals("分佣收益")){
            }else if (byId.getReason().equals("提现回退")){
                AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId());
                orderDetailVO.setType("提现回退");
                orderDetailVO.setPayOrderNo(byId1.getSerialNo());
                orderDetailVO.setWithdrawType(byId1.getWithdrawType());
                orderDetailVO.setAmount(byId1.getAmount());
                orderDetailVO.setChangeType(byId.getChangeType());
                orderDetailVO.setPaymentTime(byId1.getUpdateTime());
                return R.ok(new OrderDetailVO());
        }
        }
        return R.ok();
        return R.ok(orderDetailVO);
    }
    @PostMapping("/balanceDetail")
@@ -168,34 +221,34 @@
        AppUserWalletRecord byId = walletRecordService.getById(id);
        if (byId.getOrderId()!=null){
            if (byId.getReason().equals("提现")){
                // 远程查询提现记录
                AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId());
                orderDetailVO.setType("提现");
            }else{
                orderDetailVO.setPayOrderNo(byId1.getSerialNo());
                orderDetailVO.setWithdrawType(byId1.getWithdrawType());
                orderDetailVO.setAmount(byId1.getAmount());
                orderDetailVO.setChangeType(byId.getChangeType());
                orderDetailVO.setPaymentTime(byId1.getUpdateTime());
            }else if (byId.getReason().equals("充值")){
                Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData();
                if (byId.getChildAppUserId() == null && one!=null){
                    orderDetailVO.setId(id);
                    if (one.getOrderFrom()!=null){
                        switch (one.getOrderFrom()){
                            case 1:
                                orderDetailVO.setType("购买疗愈");
                                break;
                            case 2:
                                orderDetailVO.setType("购买课程");
                                break;
                            case 3:
                                orderDetailVO.setType("购买会员");
                                break;
                            case 4:
                                orderDetailVO.setType("充值");
                                break;
                        }
                    }
                    orderDetailVO.setPayType(one.getPayType());
                    orderDetailVO.setPayOrderNo(one.getPayOrderNo());
                    orderDetailVO.setRemark(one.getRemark());
                    orderDetailVO.setChangeType(byId.getChangeType());
                    orderDetailVO.setAmount(byId.getAmount());
                    orderDetailVO.setPaymentTime(one.getPaymentTime());
                    return R.ok(orderDetailVO);
                }else if (byId.getChildAppUserId()!=null && one!=null){
                }
            }else if (byId.getReason().equals("分佣收益")){
                Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData();
                if (byId.getChildAppUserId()!=null && one!=null){
                    orderDetailVO.setType("分佣");
                    orderDetailVO.setPayOrderNo(one.getPayOrderNo());
                    orderDetailVO.setPaymentTime(byId.getCreateTime());
                    orderDetailVO.setChangeType(byId.getChangeType());
                    orderDetailVO.setAmount(byId.getAmount());
                    orderDetailVO.setRemark(one.getRemark());
                    if (one.getCommissionId()!=null){
                        AppUser appUserById = appUserService.getById(one.getCommissionId());
                        orderDetailVO.setUserName(appUserById.getNickname());
@@ -203,9 +256,19 @@
                    }
                    return R.ok(new OrderDetailVO());
                }
            }else if (byId.getReason().equals("提现回退")){
                AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId());
                orderDetailVO.setType("提现回退");
                orderDetailVO.setPayOrderNo(byId1.getSerialNo());
                orderDetailVO.setWithdrawType(byId1.getWithdrawType());
                orderDetailVO.setAmount(byId1.getAmount());
                orderDetailVO.setChangeType(byId.getChangeType());
                orderDetailVO.setPaymentTime(byId1.getUpdateTime());
                return R.ok(new OrderDetailVO());
            }
        }
        return R.ok();
        return R.ok(orderDetailVO);
    }
}