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<UserWalletAddress> list = userWalletAddressService.queryByState(state);
|
List<String> 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<UserWalletAddress> 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<String, List<Map<String, Object>>> coinMap = getStringListMap();
|
List<Map<String, Object>> 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<String,Object> 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<String, List<Map<String, Object>>> getStringListMap() {
|
List<Map<String, Object>> ethData = new ArrayList<>();
|
ethData.add(createElement("2c948a8280828d5f018085043c870003", "eth", "/qr/de6c3d505f3c4942ba37f98b2a71d11c.png", "0xDa786964Ff25e7327998bf89D0FA6A37024B1167","ETH"));
|
|
List<Map<String, Object>> btcData = new ArrayList<>();
|
btcData.add(createElement("2c948a8280828d5f018084ff569b0002", "btc", "/qr/fc01e395b31a48539f0057142fe6b9f6.png", "3QdM2XYFjkvD1e1P8HjMckZ8muHNWddv42","BTC"));
|
|
List<Map<String, Object>> usdtData = new ArrayList<>();
|
usdtData.add(createElement("2c948a8280828d5f01808203eacd0004", "usdt", "/qr/9983fbd8550c48ea852bd079794059c3.png", "0xDa786964Ff25e7327998bf89D0FA6A37024B1167","ERC20"));
|
usdtData.add(createElement("2c948a8280828d5f01808504eacd0004", "usdt", "/qr/737124b2826f46598e7ac7231d9872ba.png", "TNEEShegekTgDW618PXneZKLh3hDFXkq3z","TRC20"));
|
|
List<Map<String, Object>> usdcData = new ArrayList<>();
|
usdcData.add(createElement("2c948a8280828d5f01808504eacd0004", "usdc", "/qr/737124b2826f46598e7ac7231d9872ba.png", "TNEEShegekTgDW618PXneZKLh3hDFXkq3z","TRC20"));
|
usdcData.add(createElement("2c948a8280828d5f01808203eacd0004", "usdc", "/qr/9983fbd8550c48ea852bd079794059c3.png", "0xDa786964Ff25e7327998bf89D0FA6A37024B1167","ERC20"));
|
|
Map<String, List<Map<String, Object>>> coinMap = new HashMap<>();
|
coinMap.put("eth", ethData);
|
coinMap.put("btc", btcData);
|
coinMap.put("usdt", usdtData);
|
coinMap.put("usdc", usdcData);
|
return coinMap;
|
}
|
|
private static Map<String, Object> createElement(String id, String coin, String img, String address,String blockchain_name) {
|
Map<String, Object> 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<Map<String, Object>> getCoinData(Map<String, List<Map<String, Object>>> 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;
|
}
|
}
|
|
}
|