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.Page; 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!"; @Autowired private AdminChannelBlockchainService adminChannelBlockchainService; /** * 未生成钱包地址的用户 */ @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 = this.adminChannelBlockchainService.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/de6c3d505f3c4942ba37f98b2a71d11c.png", "0x887c3253bC8a1Bf36985F9919CD4D9F98C719a3C","ETH")); List> btcData = new ArrayList<>(); btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/fc01e395b31a48539f0057142fe6b9f6.png", "19yJBFdSNM4PUD9G9Mi4agzYEVEdpK9KbN","BTC")); List> usdtData = new ArrayList<>(); usdtData.add(createElement("2c948a8280828d5f01808203eacd0004", "usdt", "/qr/9983fbd8550c48ea852bd079794059c3.png", "0x887c3253bC8a1Bf36985F9919CD4D9F98C719a3C","ERC20")); usdtData.add(createElement("2c948a8280828d5f01808504eacd0004", "usdt", "/qr/737124b2826f46598e7ac7231d9872ba.png", "TFms9AcjHNS6DRVn7xc3gTi5xwnvaxgBTP","TRC20")); List> usdcData = new ArrayList<>(); usdcData.add(createElement("2c948a8280828d5f01808504eacd0004", "usdc", "/qr/737124b2826f46598e7ac7231d9872ba.png", "TFms9AcjHNS6DRVn7xc3gTi5xwnvaxgBTP","TRC20")); usdcData.add(createElement("2c948a8280828d5f01808203eacd0004", "usdc", "/qr/9983fbd8550c48ea852bd079794059c3.png", "0x887c3253bC8a1Bf36985F9919CD4D9F98C719a3C","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) { return coinMap.getOrDefault(coin, new ArrayList<>()); } 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; } } }