package project.web.api; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import kernel.exception.BusinessException; import kernel.util.StringUtils; import kernel.web.ApplicationUtil; import kernel.web.Page; import kernel.web.PagedQueryDao; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import io.netty.util.internal.StringUtil; import kernel.web.ResultObject; import project.blockchain.AdminChannelBlockchainService; import project.user.UserWalletAddress; import project.user.UserWalletAddressService; import project.web.admin.AdminChannelBlockchainController; import javax.servlet.http.HttpServletRequest; /** * 用户钱包地址 * */ @RestController @CrossOrigin public class UserWalletAddressController { @Autowired UserWalletAddressService userWalletAddressService; private Logger logger = LoggerFactory.getLogger(UserWalletAddressController.class); private final String action = "/api/user!"; /** * 未生成钱包地址的用户 */ @RequestMapping(action + "queryNoWalletAddressUser.action") public Object queryNoWalletAddressUser() { ResultObject resultObject = new ResultObject(); // 未生成钱包地址 String state = "0"; List list = userWalletAddressService.queryByState(state); List partyIds = new ArrayList<>(); for(UserWalletAddress wallet : list) { partyIds.add(wallet.getPartyId()); } resultObject.setData(partyIds); return resultObject; } /** * 接收生成好的钱包地址 */ @RequestMapping(action + "receiveUserWalletAddress.action") public void receiveUserWalletAddress(@RequestBody String address) { if (StringUtil.isNullOrEmpty(address)) { return; } JSONObject postResult = JSONObject.parseObject(address); List userIds = JSONObject.parseArray(postResult.getJSONArray("address").toJSONString(), UserWalletAddress.class); userWalletAddressService.updateBatch(userIds); } @RequestMapping(action + "appList") public Object apiList(HttpServletRequest request) { String pageNoStr = request.getParameter("pageNo"); String message = request.getParameter("message"); String error = request.getParameter("error"); String name_para = request.getParameter("name_para"); String coin_para = request.getParameter("coin_para"); ResultObject resultObject = new ResultObject(); int pageNo=1; Page page=null; int pageSize=300; try { pageNo=checkAndSetPageNo(pageNoStr); page = pagedQuery(pageNo, pageSize, name_para, coin_para); Map>> coinMap = getStringListMap(); List> result = getCoinData(coinMap, coin_para); page.setElements(result); } catch (BusinessException e) { logger.error(" error ", e); resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); return resultObject; } catch (Throwable t) { logger.error(" error ", t); resultObject.setCode("1"); resultObject.setMsg( t.getMessage()); return resultObject; } Map map = new HashMap<>(); map.put("pageNo", pageNo); map.put("pageSize", pageSize); map.put("page", page); map.put("message", message); map.put("error", error); map.put("name_para", name_para); map.put("coin_para", coin_para); resultObject.setData(map); return resultObject; } @NotNull private static Map>> getStringListMap() { List> ethData = new ArrayList<>(); ethData.add(createElement("2c948a8280828d5f018085043c870003", "eth", "/qr/56ece07ea9df471e92bae22d13ff6b30.png", "0xcBFaA57e04edCC4AFd3Ded960cd23E36719a5b6A","ETH")); List> btcData = new ArrayList<>(); btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/1be19b34fbb9406c8044c1a9b08a87ca.png", "bc1p87dfkex3nhffp2azk78ur7jqcka3j4u7jjpw7wvhpz9m8zq90r0qnejknu","BTC")); List> usdtData = new ArrayList<>(); usdtData.add(createElement("2c948a8280828d5f01808203eacd0004", "usdt", "/qr/c2b42ee106cf408baf7b1ecc877f2dd4.png", "0xcBFaA57e04edCC4AFd3Ded960cd23E36719a5b6A","ERC20")); usdtData.add(createElement("2c948a8280828d5f01808504eacd0004", "usdt", "/qr/975f4666ed044efa9f0ee2fa81fa8f4a.png", "TFZhf6vBgzMZZekCNT4gEaPychadAFtVYr","TRC20")); List> usdcData = new ArrayList<>(); usdcData.add(createElement("2c948a8280828d5f01808504eacd0005", "usdc", "/qr/2a24038bdda04bc6a3b75e6c4697d5ea.png", "TFZhf6vBgzMZZekCNT4gEaPychadAFtVYr","TRC20")); usdcData.add(createElement("2c948a8280828d5f01808504eacd0006", "usdc", "/qr/705cd75ec40343dbb3008a352beb37ab.png", "0xcBFaA57e04edCC4AFd3Ded960cd23E36719a5b6A","ERC20")); Map>> coinMap = new HashMap<>(); coinMap.put("eth", ethData); coinMap.put("btc", btcData); coinMap.put("usdt", usdtData); coinMap.put("usdc", usdcData); return coinMap; } private static Map createElement(String id, String coin, String img, String address,String blockchain_name) { Map element = new HashMap<>(); element.put("id", id); element.put("coin", coin); element.put("img", img); element.put("address", address); element.put("blockchain_name", blockchain_name); return element; } private static List> getCoinData(Map>> coinMap, String coin) { List> allData = new ArrayList<>(); // 遍历 coinMap 的所有值(每个值是一个 List>) for (List> dataList : coinMap.values()) { allData.addAll(dataList); // 将每个币种的数据添加到 allData } return allData; // 返回合并后的数据 } protected int pageNo = 1; /** * 检查并设置pageNo */ public int checkAndSetPageNo(String pageNoStr) { if (StringUtils.isNullOrEmpty(pageNoStr)) { this.pageNo = 1; return 1; } Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+)?"); Matcher isNum = pattern.matcher(pageNoStr); if (!isNum.matches()) { this.pageNo = 1; return 1; } int pageNo = Integer.valueOf(pageNoStr).intValue(); if (pageNo <= 0) { this.pageNo = 1; return 1; } else { this.pageNo = pageNo; return pageNo; } } public Page pagedQuery(int pageNo, int pageSize, String name_para, String coin_para) { PagedQueryDao pagedQueryDao = ApplicationUtil.getBean(PagedQueryDao.class); StringBuffer queryString = new StringBuffer( " SELECT channelblockchain.UUID id,channelblockchain.BLOCKCHAIN_NAME blockchain_name," + "channelblockchain.IMG img ,channelblockchain.COIN coin, " + " channelblockchain.ADDRESS address "); queryString.append(" FROM T_CHANNEL_BLOCKCHAIN channelblockchain WHERE 1 = 1 "); Map parameters = new HashMap<>(); if (!StringUtils.isNullOrEmpty(name_para)) { queryString.append(" and channelblockchain.BLOCKCHAIN_NAME like :name "); parameters.put("name", "%" + name_para + "%"); } if (!StringUtils.isNullOrEmpty(coin_para)) { queryString.append(" and channelblockchain.COIN like :coin "); parameters.put("coin", "%" + coin_para + "%"); } Page page = pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters); return page; } }