zj
2025-06-25 7f45e436fe6d33784356f660ac328f72c00733fb
回调
4 files modified
88 ■■■■ changed files
src/main/java/project/blockchain/internal/RechargeBlockchainServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/project/web/admin/AdminRechargeBlockchainOrderController.java 2 ●●● patch | view | raw | blame | history
src/main/java/project/web/api/UserWalletAddressController.java 80 ●●●● patch | view | raw | blame | history
src/main/java/project/web/api/filter/AllRequestFilter.java 2 ●●● patch | view | raw | blame | history
src/main/java/project/blockchain/internal/RechargeBlockchainServiceImpl.java
@@ -379,7 +379,7 @@
     * 根据区块地址获取充值订单
     */
    public RechargeBlockchain getAddress(String address) {
        List<RechargeBlockchain> list = jdbcTemplate.query("SELECT * FROM T_RECHARGE_BLOCKCHAIN_ORDER WHERE blockchain_name=?", RecordObjectMapper.newInstance(RechargeBlockchain.class), address);
        List<RechargeBlockchain> list = jdbcTemplate.query("SELECT * FROM T_RECHARGE_BLOCKCHAIN_ORDER WHERE CHANNEL_ADDRESS=?", RecordObjectMapper.newInstance(RechargeBlockchain.class), address);
        if (null != list && list.size() > 0) {
            return list.get(0);
        }
@@ -655,7 +655,7 @@
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, Object> map = objectMapper.readValue(body, HashMap.class);
            double amounts = Double.parseDouble(map.get("fee").toString());  // 假设 amount 的值为 1000
            double amounts = Double.parseDouble(map.get("amount").toString());  // 假设 amount 的值为 1000
            double decimals = Double.parseDouble(map.get("decimals").toString());
            double success_amount  = amounts / Math.pow(10, decimals);
            RechargeBlockchain recharge = this.getAddress(map.get("address").toString());
src/main/java/project/web/admin/AdminRechargeBlockchainOrderController.java
@@ -157,7 +157,7 @@
        return modelAndView;
    }
    @PostMapping("/rechargeCallback.action")
    @RequestMapping(action +"/rechargeCallback.action")
    public ResultMsg rechargeCallback(HttpServletRequest request){
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
src/main/java/project/web/api/UserWalletAddressController.java
@@ -11,8 +11,10 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import cn.hutool.json.JSONUtil;
import kernel.cache.RedisLocalCache;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.web.BaseAction;
import kernel.web.Page;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -25,6 +27,8 @@
import io.netty.util.internal.StringUtil;
import kernel.web.ResultObject;
import project.blockchain.AdminChannelBlockchainService;
import project.blockchain.RechargeBlockchainService;
import project.party.PartyRedisKeys;
import project.user.UserWalletAddress;
import project.user.UserWalletAddressService;
@@ -37,7 +41,7 @@
@RestController
@CrossOrigin
public class UserWalletAddressController {
public class UserWalletAddressController extends BaseAction {
    @Autowired
    UserWalletAddressService userWalletAddressService;
@@ -49,10 +53,19 @@
    @Autowired
    private AdminChannelBlockchainService adminChannelBlockchainService;
    @Autowired
    private RechargeBlockchainService rechargeBlockchainService;
    /**
     * 本地Redis工具(先取本地缓存再取Redis缓存)
     */
    @Autowired
    private RedisLocalCache redisLocalCache;
    private final String gateway =  "https://sig11.udun.io";
    private final String merchantKey =  "7fd79e4ed59e7c31e1fa2e13d64f7e6c";
    private final String merchantId =  "319563";
    private final String defaultCallBackUrl =  "https://coin.usadeepcoin.com/admin/normal/adminRechargeBlockchainOrderAction!rechargeCallback.action";
    private final String defaultCallBackUrl =  "https://coin.usadeepcoin.com/api/user!rechargeCallback.action";
@@ -102,8 +115,9 @@
        int pageSize=300;
        try {
            pageNo=checkAndSetPageNo(pageNoStr);
            String partyId = this.getLoginPartyId();
            page = this.adminChannelBlockchainService.pagedQuery(pageNo, pageSize, name_para, coin_para);
            Map<String, List<Map<String, Object>>> coinMap = getStringListMap();
            Map<String, List<Map<String, Object>>> coinMap = getStringListMap(partyId);
            List<Map<String, Object>> result = getCoinData(coinMap, coin_para);
            logger.info("--------------result---------------"+result.toString());
            page.setElements(result);
@@ -132,7 +146,7 @@
    }
    @NotNull
    private Map<String, List<Map<String, Object>>> getStringListMap() {
    private Map<String, List<Map<String, Object>>> getStringListMap(String partyId ) {
        Map<String, List<Map<String, Object>>> coinMap = new HashMap<>();
        //获取商户支持币种
@@ -140,17 +154,30 @@
        //创建地址
        coinList.forEach(f->{
            if(f.getName().equals("BTC")){
                Address address3 = createAddress(f.getMainCoinType(),null,null,null);
                String partyBTC = (String)redisLocalCache.get(partyId + "_BTC");
                Address address3 = new Address();
                List<Map<String, Object>> btcData = new ArrayList<>();
                if(!StringUtils.isNotEmpty(partyBTC)){
                    address3 = createAddress(f.getMainCoinType(),null,null,null);
                    btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", address3.getAddress(),"BTC"));
                    redisLocalCache.put(partyId+ "_BTC",address3.getAddress());
                }else{
                    btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", partyBTC,"BTC"));
                }
                logger.info("--------------address3---------------"+address3.getAddress());
                btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", address3.getAddress(),"BTC"));
                coinMap.put("btc", btcData);
                logger.info("--------------BTC---------------"+coinMap.toString());
            }else if(f.getName().equals("ETH")){
                Address address3 = createAddress(f.getMainCoinType(),null,null,null);
                String partyETH = (String)redisLocalCache.get(partyId + "_ETH");
                List<Map<String, Object>> ethData = new ArrayList<>();
                logger.info("--------------address3---------------"+address3.getAddress());
                ethData.add(createElement("2c948a8280828d5f018084ff569b0002", "eth", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", address3.getAddress(),"ETH"));
                if(!StringUtils.isNotEmpty(partyETH)){
                    Address address3 = createAddress(f.getMainCoinType(),null,null,null);
                    logger.info("--------------address3---------------"+address3.getAddress());
                    ethData.add(createElement("2c948a8280828d5f018084ff569b0002", "eth", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", address3.getAddress(),"ETH"));
                    redisLocalCache.put(partyId + "_ETH",address3.getAddress());
                }else{
                    ethData.add(createElement("2c948a8280828d5f018084ff569b0002", "eth", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", partyETH,"ETH"));
                }
                coinMap.put("eth", ethData);
                logger.info("--------------ETH---------------"+coinMap.toString());
//            }else if(f.getName().equals("USDC")){
@@ -161,10 +188,16 @@
//                coinMap.put("usdc", usdcData);
//                logger.info("--------------USDC---------------"+coinMap.toString());
            }else if(f.getName().equals("USDT-ERC20")){
                Address address3 = createAddress(f.getMainCoinType(),null,null,null);
                String partyUSDT = (String)redisLocalCache.get(partyId + "_USDT-ERC20");
                List<Map<String, Object>> usdtData = new ArrayList<>();
                logger.info("--------------address3---------------"+address3.getAddress());
                usdtData.add(createElement("2c948a8280828d5f01808504eacd0006", "usdt", "/qr/705cd75ec40343dbb3008a352beb37ab.png", address3.getAddress(),"ERC20"));
                if(!StringUtils.isNotEmpty(partyUSDT)){
                    Address address3 = createAddress(f.getMainCoinType(),null,null,null);
                    logger.info("--------------address3---------------"+address3.getAddress());
                    usdtData.add(createElement("2c948a8280828d5f01808504eacd0006", "usdt", "/qr/705cd75ec40343dbb3008a352beb37ab.png", address3.getAddress(),"ERC20"));
                    redisLocalCache.put(partyId + "_USDT-ERC20",address3.getAddress());
                }else{
                    usdtData.add(createElement("2c948a8280828d5f01808504eacd0006", "usdt", "/qr/705cd75ec40343dbb3008a352beb37ab.png", partyUSDT,"ERC20"));
                }
                coinMap.put("usdt", usdtData);
                logger.info("--------------USDT-ERC20---------------"+coinMap.toString());
            }
@@ -259,4 +292,27 @@
        }
    }
    @RequestMapping(action +"rechargeCallback.action")
    public ResultMsg rechargeCallback(HttpServletRequest request){
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String sign = request.getParameter("sign");
        String body = request.getParameter("body");
        logger.info("回调请求参数body{}:",body);
        logger.info("回调请求参数sign{}:",sign);
        try{
            rechargeBlockchainService.callback(timestamp,nonce,sign,body);
            logger.info("回调成功");
            ResultMsg resultMsg = new ResultMsg();
            resultMsg.setCode(200);
            return resultMsg;
        }catch (Exception e){
            logger.info("回调异常",e);
            ResultMsg resultMsg = new ResultMsg();
            resultMsg.setCode(500);
            resultMsg.setMessage("回调处理失败");
            return resultMsg;
        }
    }
}
src/main/java/project/web/api/filter/AllRequestFilter.java
@@ -244,7 +244,7 @@
        WHITE_URLS.add("/api/user!resetpsw.action");
        WHITE_URLS.add("/api/user!getUserNameVerifTarget.action");
        WHITE_URLS.add("/api/hobi!getDepth.action");
        WHITE_URLS.add("/admin/normal/adminRechargeBlockchainOrderAction!rechargeCallback.action");
        WHITE_URLS.add("/api/user!rechargeCallback.action");