xiaoyong931011
2023-04-26 d2afc5875ab0d87573ea3d8a78eeed9af4ca1953
统计
11 files modified
1 files added
616 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/model/NBYHResponse.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/NBYHService.java 10 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java 299 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java 134 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html 31 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 31 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -198,6 +198,30 @@
    }
    /**
     * 会员提现-查看结果
     *
     * @param id
     * @return
     */
    @GetMapping("searchInfo/{id}")
    @ControllerEndpoint(operation = "会员提现-查看结果", exceptionMessage = "操作失败")
    public FebsResponse searchInfo(@NotNull(message = "{required}") @PathVariable Long id) {
        return mallMemberService.searchInfo(id);
    }
    /**
     * 会员提现-账户余额
     *
     * @param id
     * @return
     */
    @GetMapping("accountInfo/{id}")
    @ControllerEndpoint(operation = "会员提现-账户余额", exceptionMessage = "操作失败")
    public FebsResponse accountInfo(@NotNull(message = "{required}") @PathVariable Long id) {
        return mallMemberService.accountInfo(id);
    }
    /**
     * 会员提现-拒绝
     *
     * @param id
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -215,6 +215,10 @@
        return memberService.delMemberBank(id);
    }
    @ApiOperation(value = "银行名称列表", notes = "银行名称列表")
    @GetMapping(value = "/memberBankName")
    public FebsResponse memberBankDetails() {
        return memberService.findBankName();
    }
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -112,4 +112,8 @@
    IPage<MallMoneyFlow> achieveReleaseChild(QueryRequest request, MallScoreAchieveRelease mallScoreAchieveRelease);
    FebsResponse insideWithType(Long id, int i);
    FebsResponse searchInfo(Long id);
    FebsResponse accountInfo(Long id);
}
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -74,4 +74,6 @@
    FebsResponse updateMemberBank(UpdateMemberBankDto updateMemberBankDto);
    FebsResponse delMemberBank(Long id);
    FebsResponse findBankName();
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -18,7 +18,9 @@
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.pay.model.NBYHResponse;
import cc.mrbird.febs.pay.model.SinglePayDto;
import cc.mrbird.febs.pay.service.NBYHService;
import cc.mrbird.febs.pay.service.UnipayService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -32,6 +34,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.xmlbeans.impl.store.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -74,6 +77,7 @@
    private final MallMemberBankMapper mallMemberBankMapper;
    private final MallScoreRecordMapper mallScoreRecordMapper;
    private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
    private final NBYHService nbyhService;
    @Override
    public IPage<MallMember> getMallMemberList(MallMember mallMember, QueryRequest request) {
@@ -177,26 +181,15 @@
        }
        Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId();
//        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
        /**
         * 调用汇聚代付
         */
//        SinglePayDto singlePayDto = new SinglePayDto();
//        singlePayDto.setMerchantOrderNo(mallMemberWithdraw.getWithdrawNo());
//        singlePayDto.setReceiverAccountNoEncBankNo(mallMemberBank.getBankNo());
//        singlePayDto.setReceiverAccountNoEncName(mallMemberBank.getName());
//        singlePayDto.setReceiverAccountType("201");
//        BigDecimal paidAmount = mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN);
//        singlePayDto.setPaidAmount(paidAmount);
//        singlePayDto.setCurrency("201");
//        singlePayDto.setIsChecked("202");
//        singlePayDto.setPaidDesc("用户提现");
//        singlePayDto.setPaidUse("202");
//        String singlePayRep = unipayService.singlePay(singlePayDto);
//        if(!mallMemberWithdraw.getWithdrawNo().equals(singlePayRep)){
//            return new FebsResponse().fail().message("提现失败,请稍后查看错误信息一览");
//        }
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
        String bankName = mallMemberBank.getBankName();
        NBYHResponse nbyhResponse = new NBYHResponse();
        if("宁波银行".equals(bankName)){
            nbyhResponse = nbyhService.tradeSinge(mallMemberWithdraw.getId());
        }else{
            nbyhResponse = nbyhService.tradeSingeOuterTransfer(mallMemberWithdraw.getId());
        }
        if(nbyhResponse.isFlag()){
        mallMemberWithdraw.setStatus(2);
        mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
@@ -208,8 +201,10 @@
            mallMoneyFlow.setStatus(2);
            mallMoneyFlowMapper.updateById(mallMoneyFlow);
        }
        return new FebsResponse().success();
            return new FebsResponse().success().message(nbyhResponse.getMsg());
        }else{
            return new FebsResponse().fail().message(nbyhResponse.getMsg());
        }
    }
    @Override
@@ -796,6 +791,21 @@
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse searchInfo(Long id) {
        NBYHResponse nbyhResponse1 = nbyhService.transferResultInfoQuery(id);
        return new FebsResponse().success().message(nbyhResponse1.getMsg());
    }
    @Override
    public FebsResponse accountInfo(Long id) {
        boolean b = nbyhService.accountInfoQuery(id);
        if(!b){
            return new FebsResponse().fail().message("银行账户余额不足");
        }
        return new FebsResponse().success().message("可以转账");
    }
    private String refererIds(String parentId) {
        boolean flag = false;
        if (StrUtil.isBlank(parentId)) {
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -36,6 +36,7 @@
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author wzy
@@ -642,4 +643,14 @@
        mallMemberBankMapper.deleteById(id);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse findBankName() {
        List<String> bankNameList = new ArrayList<>();
        List<DataDictionaryCustom> typeBank = dataDictionaryCustomMapper.selectDicByType("TYPE_BANK");
        if(CollUtil.isNotEmpty(typeBank)){
            bankNameList = typeBank.stream().map(DataDictionaryCustom::getValue).collect(Collectors.toList());
        }
        return new FebsResponse().success().data(bankNameList);
    }
}
src/main/java/cc/mrbird/febs/pay/model/NBYHResponse.java
New file
@@ -0,0 +1,10 @@
package cc.mrbird.febs.pay.model;
import lombok.Data;
@Data
public class NBYHResponse {
    private boolean flag;
    private String msg;
}
src/main/java/cc/mrbird/febs/pay/service/NBYHService.java
@@ -1,5 +1,7 @@
package cc.mrbird.febs.pay.service;
import cc.mrbird.febs.pay.model.NBYHResponse;
/**
 * 宁波银企直联接口
 */
@@ -12,7 +14,7 @@
     *           3、定时器循环请求,更新提现记录,直到返回的状态为90,更新状态为成功。
     *
     */
    boolean tradeSinge(Long id);
    NBYHResponse tradeSinge(Long id);
    /**
     * 跨行汇款
     * @param id 提现ID
@@ -21,9 +23,11 @@
     *           3、定时器循环请求,更新提现记录,直到返回的状态为90,更新状态为成功。
     *
     */
    boolean tradeSingeOuterTransfer(Long id);
    NBYHResponse tradeSingeOuterTransfer(Long id);
    /**
     * 转账结果查询
     */
    void transferResultInfoQuery(Long id);
    NBYHResponse transferResultInfoQuery(Long id);
    boolean accountInfoQuery(Long id);
}
src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.mall.mapper.MallMemberWithdrawMapper;
import cc.mrbird.febs.mall.mapper.MallMemberWithdrawMsgMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.pay.model.NBYHResponse;
import cc.mrbird.febs.pay.service.NBYHService;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
@@ -16,10 +17,7 @@
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@@ -35,6 +33,7 @@
    /**
     * 转账报文原文
     */
    private static final String ACCOUNT_MESSAGE_SEARCH = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><ZHHA>${ZHHA}</ZHHA></ReqParam></opReq>";
    private static final String TRADE_MESSAGE_SEARCH = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><JYXH>${serialNoOld}</JYXH></ReqParam></opReq>";
    private static final String TRADE_MESSAGE_SINGLE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>${FKZH}</FKZH><SKZH>${SKZH}</SKZH><SKHM>${SKHM}</SKHM><JYJE>${JYJE}</JYJE><YOTU>${YOTU}</YOTU></ReqParam></opReq>";
//    private static final String TRADE_MESSAGE_SINGLE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq>";
@@ -107,11 +106,16 @@
    /**
     * 接收报文url
     */
    private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess";
//    private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess";
//    private static final String URL = "http://220.168.79.89:9080/directlink/httpAccess";
    private static final String URL = "http://747f9407.r3.cpolar.top/directlink/httpAccess";
//    private static final String URL = "http://1d6d-220-168-79-89.ngrok.io/directlink/httpAccess";
    /**
     * 签名ip
     */
    private static final String VERIFY_IP = "127.0.0.1";
//    private static final String VERIFY_IP = "127.0.0.1";
    private static final String VERIFY_IP = "3b425db8.r10.cpolar.top";
//    private static final String VERIFY_IP = "747f9407.r3.cpolar.top";
    /**
     * 付款账号
     */
@@ -126,7 +130,7 @@
     */
    private static String cookies = null;
    /**
     * sessionId
     * sessionIdhttp://1d6d-220-168-79-89.ngrok.io
     */
    private static String sessionId = "-1";
    /**
@@ -148,6 +152,20 @@
    public static void main(String[] args) {
        try {
            InetAddress addr = InetAddress.getByName(VERIFY_IP);
            String hostName = addr.getHostName();
//            Socket socket = new Socket(hostName, VERIFY_PORT);
            String hostAddress = addr.getHostAddress();
            SocketAddress address = new InetSocketAddress(VERIFY_IP, 8010);
            Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
            Socket socket = new Socket(proxy);
            int port = socket.getPort();
            System.out.println("发送登录请求:"+addr);
            System.out.println("发送登录请求:"+address);
            System.out.println("发送登录请求:"+hostName);
            System.out.println("发送登录请求:"+port);
//            System.out.println("发送登录请求:");
//            test.executeServerHttpService("srv001_signOn");
//            System.out.println("\n发送转账结果查询请求:");
@@ -170,7 +188,7 @@
    private MallMemberBankMapper mallMemberBankMapper;
    @Override
    public boolean tradeSinge(Long id) {
    public NBYHResponse tradeSinge(Long id) {
        /**
         * <?xml version="1.0" encoding="UTF-8"?>
         *     <NBCBEBankData>
@@ -193,12 +211,19 @@
         *         <signData>MIIEzQYKKoEcz1UGAQQCAqCCBL0wggS5AgEBMQ4wDAYIKoEcz1UBgxEFADCB+AYKKoEcz1UGAQQCAaCB6QSB5jxvcFJlcT48c2VyaWFsTm8+VzIwMjMwNDI0MTcxMzQ0MDUwODY8L3NlcmlhbE5vPjxyZXFUaW1lPjIwMjMwNDI0MTc0MDE2PC9yZXFUaW1lPjxSZXFQYXJhbT48RktaSD44MjI2MDEyMDEwMjAyMjYzMTwvRktaSD48U0taSD43ODA0MDEyMjAwMDA1OTI3NzwvU0taSD48U0tITT43OTIzMTE5NTc8L1NLSE0+PEpZSkU+MS4wMDwvSllKRT48WU9UVT7Q0MTa16rVyzwvWU9UVT48L1JlcVBhcmFtPjwvb3BSZXE+oIIC0TCCAs0wggJxoAMCAQICBRBVc1EWMAwGCCqBHM9VAYN1BQAwXDELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEbMBkGA1UEAwwSQ0ZDQSBURVNUIFNNMiBPQ0ExMB4XDTIzMDMwOTAyNTUzM1oXDTI1MDMwOTAyNTUzM1owcjELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0JPQzETMBEGA1UECwwKQ0ZDQVRlY2hURTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjElMCMGA1UEAwwcQ0ZDQVRlY2hURUB0ZXN0cWl5ZUBaMTExMTFAMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABPHX9dm+K8G4WGe2uAHWZKI0aJgmHQfcTyK6jxKvEC5ADcptfpbe2u0cgSwBXFsyAuXY/6wq2vm1wyzmKqGCikGjggEGMIIBAjAfBgNVHSMEGDAWgBRr/hjaj0I6prhtsy6Igzo0osEw4TAMBgNVHRMBAf8EAjAAMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL3VjcmwuY2ZjYS5jb20uY24vU00yL2NybDQ3MDc2LmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFEr8/JLNuSXaME4XwdfG4VbI1nppMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIDO8ojBrfnfn1xqHqLovnTRUmSfwmKBPHSCjIf7DBQUzAiEAnGcbKMqUfYj+35WqRfZrb9u34IcgYg0sOc9l/TKHol0xgdMwgdACAQEwZTBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTECBRBVc1EWMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAERzBFAiEAhXpldulA3eL7gbu97bo7BFKDf+AJk2OUoNcU88pbb3ICIEwlp1PJ43Lj2frEIBp9HKiyaX/wQBDOasfOk5Kk39KC</signData>
         *     </NBCBEBankData>
         */
        NBYHResponse nbyhResponse = new NBYHResponse();
        boolean flag = false;
        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id);
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId());
        try {
            String requestDataForWithDraw = getRequestDataForWithDraw("srv006_singleInnerTransfer", "行内转账", mallMemberWithdraw, mallMemberBank);
            String responseStr = executeServerHttpService(requestDataForWithDraw);
            errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10,
                    responseStr.indexOf("</errorMsg>"));
            String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6,
                    responseStr.indexOf("</SBYY>"));
            nbyhResponse.setMsg(errorMessage+SBYYStr);
            boolean b = parseReturnValueForTrade(responseStr);
            if(b){
                //插入一条记录
@@ -217,17 +242,28 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
        nbyhResponse.setFlag(flag);
        return nbyhResponse;
    }
    @Override
    public boolean tradeSingeOuterTransfer(Long id) {
    public NBYHResponse tradeSingeOuterTransfer(Long id) {
        NBYHResponse nbyhResponse = new NBYHResponse();
        boolean flag = false;
        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id);
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId());
        try {
            String requestDataForWithDraw = getRequestDataForWithDraw("srv007_singleOuterTransfer", "跨行汇款", mallMemberWithdraw, mallMemberBank);
            String responseStr = executeServerHttpService(requestDataForWithDraw);
            errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10,
                    responseStr.indexOf("</errorMsg>"));
            String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6,
                    responseStr.indexOf("</SBYY>"));
            nbyhResponse.setMsg(errorMessage+SBYYStr);
            boolean b = parseReturnValueForTrade(responseStr);
            if(b){
                //插入一条记录
@@ -246,36 +282,99 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
        nbyhResponse.setFlag(flag);
        return nbyhResponse;
    }
    @Override
    public void transferResultInfoQuery(Long id) {
    public NBYHResponse transferResultInfoQuery(Long id) {
        /**
         * <?xml version="1.0" encoding="UTF-8"?>
         *     <NBCBEBankData>
         *         <sessionId>-1</sessionId>
         *         <serviceId>srv008_transferResultInfoQuery</serviceId>
         *         <customerId>0000005332</customerId>
         *         <softwareId>002</softwareId>
         *         <functionId>srv008</functionId>
         *         <functionName>转账结果查询</functionName>
         *         <opReq>
         *             <serialNo>W2023042417134405087</serialNo>
         *             <reqTime>20230424180506</reqTime>
         *             <ReqParam>
         *                 <JYXH>W2023042417134405087</JYXH>
         *             </ReqParam>
         *         </opReq>
         *         <signData>MIIEdwYKKoEcz1UGAQQCAqCCBGcwggRjAgEBMQ4wDAYIKoEcz1UBgxEFADCBoQYKKoEcz1UGAQQCAaCBkgSBjzxvcFJlcT48c2VyaWFsTm8+VzIwMjMwNDI0MTcxMzQ0MDUwODc8L3NlcmlhbE5vPjxyZXFUaW1lPjIwMjMwNDI0MTgwNTA2PC9yZXFUaW1lPjxSZXFQYXJhbT48SllYSD5XMjAyMzA0MjQxNzEzNDQwNTA4NzwvSllYSD48L1JlcVBhcmFtPjwvb3BSZXE+oIIC0TCCAs0wggJxoAMCAQICBRBVc1EWMAwGCCqBHM9VAYN1BQAwXDELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEbMBkGA1UEAwwSQ0ZDQSBURVNUIFNNMiBPQ0ExMB4XDTIzMDMwOTAyNTUzM1oXDTI1MDMwOTAyNTUzM1owcjELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0JPQzETMBEGA1UECwwKQ0ZDQVRlY2hURTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjElMCMGA1UEAwwcQ0ZDQVRlY2hURUB0ZXN0cWl5ZUBaMTExMTFAMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABPHX9dm+K8G4WGe2uAHWZKI0aJgmHQfcTyK6jxKvEC5ADcptfpbe2u0cgSwBXFsyAuXY/6wq2vm1wyzmKqGCikGjggEGMIIBAjAfBgNVHSMEGDAWgBRr/hjaj0I6prhtsy6Igzo0osEw4TAMBgNVHRMBAf8EAjAAMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL3VjcmwuY2ZjYS5jb20uY24vU00yL2NybDQ3MDc2LmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFEr8/JLNuSXaME4XwdfG4VbI1nppMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIDO8ojBrfnfn1xqHqLovnTRUmSfwmKBPHSCjIf7DBQUzAiEAnGcbKMqUfYj+35WqRfZrb9u34IcgYg0sOc9l/TKHol0xgdQwgdECAQEwZTBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTECBRBVc1EWMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAESDBGAiEAohIVn9P6WRg+ZdOzqgqKs38tRhG13f3jv1EEp9CQn+0CIQC//I83nEjczU5TgF273KCuCILgzUodySc3osMUyuEiGw==</signData>
         *     </NBCBEBankData>
         */
        NBYHResponse nbyhResponse = new NBYHResponse();
        boolean flag = false;
        MallMemberWithdrawMsg mallMemberWithdrawMsg = mallMemberWithdrawMapper.selectMsgByWithdrawNo(id);
//        if(ObjectUtil.isEmpty(mallMemberWithdrawMsg)){
//            return;
//        }
//        if(ObjectUtil.isNotEmpty(mallMemberWithdrawMsg)){
//        Integer status = mallMemberWithdrawMsg.getStatus();
//        if(1 == status){
//            return;
//                nbyhResponse.setFlag(flag);
//                return nbyhResponse;
//        }
//        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(mallMemberWithdrawMsg.getWithdrawId());
        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(304L);
//        }
        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id);
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId());
        try {
            String requestDataForWithDraw = getRequestDataForWithDraw("srv008_transferResultInfoQuery", "转账结果查询", mallMemberWithdraw, mallMemberBank);
            String responseStr = executeServerHttpService(requestDataForWithDraw);
            errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10,
                    responseStr.indexOf("</errorMsg>"));
            String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6,
                    responseStr.indexOf("</SBYY>"));
            nbyhResponse.setMsg(errorMessage+SBYYStr);
            boolean b = parseReturnValue(responseStr);
            if(b){
                if(ObjectUtil.isNotEmpty(mallMemberWithdrawMsg)){
                mallMemberWithdrawMsg.setStatus(1);
                mallMemberWithdrawMsgMapper.updateById(mallMemberWithdrawMsg);
            }
            return;
                flag = true;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        nbyhResponse.setFlag(flag);
        return nbyhResponse;
    }
    @Override
    public boolean accountInfoQuery(Long id) {
        boolean flag = false;
        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id);
        try {
            String requestDataForWithDraw = getRequestDataForWithDraw("srv003_singleAccountInfoQuery", "账户余额及基本信息查询", mallMemberWithdraw, null);
            String responseStr = executeServerHttpService(requestDataForWithDraw);
            String stateStr = responseStr.substring(responseStr.indexOf("<state>") + 7,
                    responseStr.indexOf("</state>"));
            String KYERStr = responseStr.substring(responseStr.indexOf("<KYER>") + 6,
                    responseStr.indexOf("</KYER>"));
            BigDecimal amount = BigDecimal.ZERO;
            if(mallMemberWithdraw.getRemark().equals("凭证提现")){
                amount = mallMemberWithdraw.getAmount().setScale(2, BigDecimal.ROUND_DOWN);
            }else{
                amount = mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN);
            }
            if(stateStr.equals("0") && new BigDecimal(KYERStr).compareTo(amount) >= 0){
                flag = true;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    /**
@@ -340,80 +439,80 @@
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static String getRequestData(String serviceId, String serviceName, String serialNo)
            throws FileNotFoundException, IOException {
        StringBuffer buf = new StringBuffer();
        // 报文编码格式utf-8
        buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><NBCBEBankData>");
        buf.append("<sessionId>");
        buf.append(sessionId);
        buf.append("</sessionId>");
        buf.append("<serviceId>");
        buf.append(serviceId);
        buf.append("</serviceId>");
        String reqData = "";
        if (serviceId.equals("srv001_signOn")) {
            reqData = SIGN_MESSAGE;
        } else if (serviceId.equals("srv006_singleInnerTransfer")) {
            reqData = TRADE_MESSAGE_SINGLE;
            /**
             * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq>
             * <opReq>
             *     <serialNo>${serialNo}</serialNo>
             *     <reqTime>${reqTime}</reqTime>
             *     <ReqParam>
             *         <FKZH>${FKZH}</FKZH>
             *         <SKZH>${SKZH}</SKZH>
             *         <SKHM>${SKHM}</SKHM>
             *         <JYJE>${JYJE}</JYJE>
             *         <YOTU>${YOTU}</YOTU>
             *     </ReqParam>
             * </opReq>
             */
            reqData = reqData.replaceFirst("\\$\\{FKZH\\}", serialNo);
            reqData = reqData.replaceFirst("\\$\\{SKZH\\}", serialNo);
            reqData = reqData.replaceFirst("\\$\\{SKHM\\}", serialNo);
            reqData = reqData.replaceFirst("\\$\\{JYJE\\}", serialNo);
            reqData = reqData.replaceFirst("\\$\\{YOTU\\}", serialNo);
        }else if (serviceId.equals("srv007_singleOuterTransfer")) {
            reqData = TRADE_MESSAGE;
        }else if (serviceId.equals("srv008_transferResultInfoQuery")) {
            reqData = TRADE_MESSAGE_SEARCH;
            //原订单流水号
            reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", serialNo);
        }
//        String serialNo = String.valueOf(Math.round(Math.random() * 10000))
//                + System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String reqTime = sdf.format(date);
        reqData = reqData.replaceFirst("\\$\\{serialNo\\}", serialNo);
        reqData = reqData.replaceFirst("\\$\\{reqTime\\}", reqTime);
        String signData = null;
        try {
            signData = signData(reqData);
            signData = getNodeValue(signData, "signed_data");
        } catch (Exception e) {
            e.printStackTrace();
        }
        buf.append("<customerId>");
        buf.append(customerId);
        buf.append("</customerId>");
        buf.append("<softwareId>");
        buf.append(softwareId);
        buf.append("</softwareId>");
        buf.append("<functionId>");
        buf.append(serviceId.substring(0, 6));
        buf.append("</functionId>");
        buf.append("<functionName>");
        buf.append(serviceName);
        buf.append("</functionName>");
        buf.append(reqData + "<signData>" + signData
                + "</signData></NBCBEBankData>");
        return buf.toString();
    }
//    public static String getRequestData(String serviceId, String serviceName, String serialNo)
//            throws FileNotFoundException, IOException {
//        StringBuffer buf = new StringBuffer();
//        // 报文编码格式utf-8
//        buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><NBCBEBankData>");
//        buf.append("<sessionId>");
//        buf.append(sessionId);
//        buf.append("</sessionId>");
//        buf.append("<serviceId>");
//        buf.append(serviceId);
//        buf.append("</serviceId>");
//        String reqData = "";
//        if (serviceId.equals("srv001_signOn")) {
//            reqData = SIGN_MESSAGE;
//        } else if (serviceId.equals("srv006_singleInnerTransfer")) {
//            reqData = TRADE_MESSAGE_SINGLE;
//            /**
//             * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq>
//             * <opReq>
//             *     <serialNo>${serialNo}</serialNo>
//             *     <reqTime>${reqTime}</reqTime>
//             *     <ReqParam>
//             *         <FKZH>${FKZH}</FKZH>
//             *         <SKZH>${SKZH}</SKZH>
//             *         <SKHM>${SKHM}</SKHM>
//             *         <JYJE>${JYJE}</JYJE>
//             *         <YOTU>${YOTU}</YOTU>
//             *     </ReqParam>
//             * </opReq>
//             */
//            reqData = reqData.replaceFirst("\\$\\{FKZH\\}", serialNo);
//            reqData = reqData.replaceFirst("\\$\\{SKZH\\}", serialNo);
//            reqData = reqData.replaceFirst("\\$\\{SKHM\\}", serialNo);
//            reqData = reqData.replaceFirst("\\$\\{JYJE\\}", serialNo);
//            reqData = reqData.replaceFirst("\\$\\{YOTU\\}", serialNo);
//        }else if (serviceId.equals("srv007_singleOuterTransfer")) {
//            reqData = TRADE_MESSAGE;
//        }else if (serviceId.equals("srv008_transferResultInfoQuery")) {
//            reqData = TRADE_MESSAGE_SEARCH;
//            //原订单流水号
//            reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", serialNo);
//        }
////        String serialNo = String.valueOf(Math.round(Math.random() * 10000))
////                + System.currentTimeMillis();
//        Calendar calendar = Calendar.getInstance();
//        Date date = calendar.getTime();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
//
//        String reqTime = sdf.format(date);
//        reqData = reqData.replaceFirst("\\$\\{serialNo\\}", serialNo);
//        reqData = reqData.replaceFirst("\\$\\{reqTime\\}", reqTime);
//        String signData = null;
//        try {
//            signData = signData(reqData);
//            signData = getNodeValue(signData, "signed_data");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        buf.append("<customerId>");
//        buf.append(customerId);
//        buf.append("</customerId>");
//        buf.append("<softwareId>");
//        buf.append(softwareId);
//        buf.append("</softwareId>");
//        buf.append("<functionId>");
//        buf.append(serviceId.substring(0, 6));
//        buf.append("</functionId>");
//        buf.append("<functionName>");
//        buf.append(serviceName);
//        buf.append("</functionName>");
//        buf.append(reqData + "<signData>" + signData
//                + "</signData></NBCBEBankData>");
//        return buf.toString();
//    }
    /**
     * 组装完整的报文
     *
@@ -507,6 +606,20 @@
            reqData = TRADE_MESSAGE_SEARCH;
            //原订单流水号
            reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", mallMemberWithdraw.getWithdrawNo());
        }else if (serviceId.equals("srv003_singleAccountInfoQuery")) {
            reqData = ACCOUNT_MESSAGE_SEARCH;
            /**
             * <opReq>
             *         <serialNo>${serialNo}</serialNo>
             *         <reqTime>${reqTime}</reqTime>
             *         <ReqParam>
             *             <ZHHA>${ZHHA}</ZHHA>
             *         </ReqParam>
             *     </opReq>
             * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><ZHHA>${ZHHA}</ZHHA></ReqParam></opReq>
             */
            //原订单流水号
            reqData = reqData.replaceFirst("\\$\\{ZHHA\\}", FKZH);
        }
//        String serialNo = String.valueOf(Math.round(Math.random() * 10000))
//                + System.currentTimeMillis();
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -29,71 +29,71 @@
    @Autowired
    private IMemberProfitService memberProfitService;
    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
    public void agentReturn(Message message, Channel channel) {
        log.info("消费者:{}", new String(message.getBody()));
    }
    @RabbitListener(queues = "hlm_queue_order_delay")
    public void orderCancelDelay(String id) {
        try {
            orderInfoService.autoCancelOrder(Long.parseLong(id));
        } catch (Exception e) {
            log.error("订单超时支付异常", e);
        }
    }
    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
    public void agentAutoLevelUp(String id) {
        log.info("收到合伙人自动升级消息:{}", id);
        try {
            agentService.autoUpAgentLevel(Long.parseLong(id));
        } catch (Exception e) {
            log.error("合伙人自动升级异常", e);
        }
    }
    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
    public void agentReturnMoney(String orderId) {
        log.info("收到返利消息:{}", orderId);
        try {
            agentService.returnMoneyToAgent(Long.parseLong(orderId));
        } catch (Exception e) {
            log.error("返利异常", e);
        }
    }
    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
    public void orderReturnMoney(String orderId) {
        log.info("收到订单返利消息:{}", orderId);
        try {
            memberProfitService.dynamicProfit(Long.parseLong(orderId));
        } catch (Exception e) {
            log.error("订单返利异常:", e);
        }
    }
    @RabbitListener(queues = QueueConstants.PERK_MONEY)
    public void perkMoneyConsumer(String id) {
        log.info("收到补贴消息:{}", id);
        try {
            agentService.perkMoneyConsumer(Long.parseLong(id));
        } catch (Exception e) {
            log.error("用户补贴异常", e);
            // todo 更新表
        }
    }
    @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE)
    public void forceVoucherSaleConsumer(String price) {
        log.info("收到强制卖出消息,价格:{}",price);
        try {
            memberProfitService.selaHalfVoucher(price);
        } catch (Exception e) {
            log.error("强制卖出异常", e);
            // todo 更新表
        }
    }
//    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
//    public void agentReturn(Message message, Channel channel) {
//        log.info("消费者:{}", new String(message.getBody()));
//    }
//
//    @RabbitListener(queues = "hlm_queue_order_delay")
//    public void orderCancelDelay(String id) {
//        try {
//            orderInfoService.autoCancelOrder(Long.parseLong(id));
//        } catch (Exception e) {
//            log.error("订单超时支付异常", e);
//        }
//    }
//
//    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
//    public void agentAutoLevelUp(String id) {
//        log.info("收到合伙人自动升级消息:{}", id);
//        try {
//            agentService.autoUpAgentLevel(Long.parseLong(id));
//        } catch (Exception e) {
//            log.error("合伙人自动升级异常", e);
//        }
//    }
//
//    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
//    public void agentReturnMoney(String orderId) {
//        log.info("收到返利消息:{}", orderId);
//        try {
//            agentService.returnMoneyToAgent(Long.parseLong(orderId));
//        } catch (Exception e) {
//            log.error("返利异常", e);
//        }
//    }
//
//    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
//    public void orderReturnMoney(String orderId) {
//        log.info("收到订单返利消息:{}", orderId);
//        try {
//            memberProfitService.dynamicProfit(Long.parseLong(orderId));
//        } catch (Exception e) {
//            log.error("订单返利异常:", e);
//        }
//    }
//
//    @RabbitListener(queues = QueueConstants.PERK_MONEY)
//    public void perkMoneyConsumer(String id) {
//        log.info("收到补贴消息:{}", id);
//        try {
//            agentService.perkMoneyConsumer(Long.parseLong(id));
//        } catch (Exception e) {
//            log.error("用户补贴异常", e);
//            // todo 更新表
//
//        }
//    }
//
//    @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE)
//    public void forceVoucherSaleConsumer(String price) {
//        log.info("收到强制卖出消息,价格:{}",price);
//        try {
//            memberProfitService.selaHalfVoucher(price);
//        } catch (Exception e) {
//            log.error("强制卖出异常", e);
//            // todo 更新表
//
//        }
//    }
}
src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
@@ -51,10 +51,13 @@
<script type="text/html" id="charge-flow-list-option">
    {{# if(d.status === 1) { }}
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button>
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="searchInfo:view" lay-event="searchInfo">查询结果</button>
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="accountInfo:view" lay-event="accountInfo">账户余额</button>
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeDisagree:update" lay-event="chargeDisagree" >拒绝</button>
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="paymentInfo:update" lay-event="paymentInfo">查看收款方式</button>
    {{# } else { }}
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="paymentInfo:update" lay-event="paymentInfo">查看收款方式</button>
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="searchInfo:view" lay-event="searchInfo">查询结果</button>
    {{# } }}
</script>
<!-- 表格操作栏 end -->
@@ -94,12 +97,38 @@
                    chargeDisagree(data.id);
                });
            }
            if (layEvent === 'searchInfo') {
                febs.modal.confirm('查询结果', '查看银行转账结果?', function () {
                    searchInfo(data.id);
                });
            }
            if (layEvent === 'accountInfo') {
                febs.modal.confirm('账户余额', '查看银行账户余额是否大于此次转账金额?', function () {
                    accountInfo(data.id);
                });
            }
            if (layEvent === 'paymentInfo') {
                febs.modal.open( '收款信息', 'modules/mallMember/paymentInfo/' + data.id, {
                    maxmin: true,
                });
            }
        });
        function searchInfo(id) {
            febs.get(ctx + 'admin/mallMember/searchInfo/' + id, null, function (data) {
                febs.alert.success(data.message);
                // febs.alert.success('操作成功');
                window.location.reload();
                // $query.click();
            });
        }
        function accountInfo(id) {
            febs.get(ctx + 'admin/mallMember/accountInfo/' + id, null, function (data) {
                febs.alert.success(data.message);
                // febs.alert.success('操作成功');
                window.location.reload();
                // $query.click();
            });
        }
        function chargeAgree(id) {
            febs.get(ctx + 'admin/mallMember/chargeAgree/' + id, null, function () {
                febs.alert.success('操作成功');
@@ -154,7 +183,7 @@
                            }
                        }, minWidth: 80,align:'center'},
                    {field: 'createdTime', title: '创建时间', minWidth: 180,align:'center'},
                    {title: '操作', minWidth: 250 ,toolbar: '#charge-flow-list-option'}
                    {title: '操作', minWidth: 400 ,toolbar: '#charge-flow-list-option'}
                ]]
            });
        }
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -8,15 +8,11 @@
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
import cc.mrbird.febs.mall.quartz.OrderSettlementJob;
import cc.mrbird.febs.mall.service.IAgentService;
import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.pay.model.*;
import cc.mrbird.febs.pay.service.LaKaLaService;
import cc.mrbird.febs.pay.service.NBYHService;
import cc.mrbird.febs.pay.service.UnipayService;
import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
@@ -94,6 +90,8 @@
    ResourceLoader resourceLoader;
    @Autowired
    private NBYHService nbyhService;
    @Autowired
    private IAdminMallMemberService mallMemberService;
    @Test
    public void agentProfitTrade() {
//        try {
@@ -101,8 +99,13 @@
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        nbyhService.tradeSinge(304L);
        nbyhService.transferResultInfoQuery(304L);
//        nbyhService.tradeSinge(306L);
//        nbyhService.tradeSingeOuterTransfer(306L);
//        nbyhService.accountInfoQuery(306L);
//        nbyhService.transferResultInfoQuery(306L);
//        mallMemberService.chargeAgree(307L);
//        mallMemberService.searchInfo(307L);
    }
    @Test
    public void agentProfit() {
@@ -111,13 +114,13 @@
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
        LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDate = new LaKaLaCreateOrderReqDate();
        //订单编号
        laKaLaCreateOrderReqDate.setOut_order_no("2023041918302032901");
        //订单金额,分计
        laKaLaCreateOrderReqDate.setTotal_amount(new BigDecimal(1).longValue());
        laKaLaCreateOrderReqDate.setOrder_info("礼品一");
        laKaLaService.verifyCreateOrder(laKaLaCreateOrderReqDate);
//        LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDate = new LaKaLaCreateOrderReqDate();
//        //订单编号
//        laKaLaCreateOrderReqDate.setOut_order_no("2023041918302032901");
//        //订单金额,分计
//        laKaLaCreateOrderReqDate.setTotal_amount(new BigDecimal(1).longValue());
//        laKaLaCreateOrderReqDate.setOrder_info("礼品一");
//        laKaLaService.verifyCreateOrder(laKaLaCreateOrderReqDate);
    }
//
//