package project.data;
|
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.LinkedList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.stream.Collectors;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.util.CollectionUtils;
|
|
import kernel.exception.BusinessException;
|
import kernel.util.Arith;
|
import kernel.util.DateUtils;
|
import kernel.web.ApplicationUtil;
|
import kernel.web.Page;
|
import project.Constants;
|
import project.contract.ContractOrder;
|
import project.data.DataService;
|
import project.data.model.Realtime;
|
import project.exchange.ExchangeApplyOrder;
|
import project.finance.FinanceOrder;
|
import project.futures.FuturesOrder;
|
import project.miner.model.MinerOrder;
|
import project.party.PartyService;
|
import project.party.model.Party;
|
import project.party.model.UserRecom;
|
import project.party.recom.UserRecomService;
|
import project.user.ChildrenLever;
|
import project.user.UserData;
|
import project.user.UserDataService;
|
import project.user.UserDataSum;
|
import security.Role;
|
import security.SecUser;
|
import security.internal.SecUserService;
|
|
public class UserDataServiceImpl implements UserDataService {
|
|
private DataService dataService;
|
|
private PartyService partyService;
|
|
private SecUserService secUserService;
|
|
private UserRecomService userRecomService;
|
|
private Map<String, Map<String, UserData>> cache = new ConcurrentHashMap<String, Map<String, UserData>>();
|
|
public Map<String, UserData> cacheByPartyId(String partyId) {
|
return cache.get(partyId);
|
}
|
|
public List<Map<String, UserData>> cacheByPartyIds(List<String> partyIds) {
|
if(CollectionUtils.isEmpty(partyIds)) return new LinkedList<Map<String, UserData>>();
|
|
List<Map<String, UserData>> result = new LinkedList<Map<String, UserData>>();
|
for(String id:partyIds) result.add(cache.get(id));
|
|
return result;
|
}
|
|
public void init() {
|
List<UserData> all = getAll();
|
for (int i = 0; i < all.size(); setCache(all.get(i++)));
|
}
|
|
public List<UserData> getAll() {
|
return ApplicationUtil.executeSelect(UserData.class);
|
}
|
|
private UserData findBydate(String partyId, Date date) {
|
Date createTime_begin = null;
|
Date createTime_end = null;
|
if (date != null) {
|
createTime_begin = DateUtils.toDate(DateUtils.format(date, "yyyy-MM-dd"));
|
createTime_end = DateUtils.addDate(createTime_begin, 1);
|
}
|
|
List<UserData> list = ApplicationUtil.executeSelect(UserData.class,"WHERE PARTY_ID=? AND CREATE_TIME>=? AND CREATE_TIME<?",new Object[] {partyId,createTime_begin,createTime_end});
|
return list.size()<=0?null:list.get(0);
|
}
|
|
public void updateSum(UserDataSum entity) {
|
ApplicationUtil.executeUpdate(entity);
|
}
|
|
/**
|
* 根据partyId获取UserDataSum
|
*/
|
public UserDataSum saveBySum(String partyId) {
|
List<UserDataSum> list = ApplicationUtil.executeSelect(UserDataSum.class,"WHERE PARTY_ID=?",new Object[] {partyId});
|
if (list.size()>0) return list.get(0);
|
|
UserDataSum userDataSum = new UserDataSum();
|
userDataSum.setPartyId(partyId);
|
ApplicationUtil.executeInsert(userDataSum);
|
|
return userDataSum;
|
}
|
|
public void setCache(UserData entity) {
|
Map<String, UserData> map_party = cache.get(entity.getPartyId().toString());
|
if (map_party == null) cache.put(entity.getPartyId().toString(),map_party=new ConcurrentHashMap<String,UserData>());
|
map_party.put(DateUtils.format(entity.getCreateTime(), DateUtils.DEFAULT_DATE_FORMAT), entity);
|
}
|
|
public void save(UserData entity) {
|
UserData db = findBydate(entity.getPartyId().toString(), entity.getCreateTime());
|
if (db != null) {
|
db.setRecharge_dapp(Arith.add(db.getRecharge_dapp(), entity.getRecharge_dapp()));
|
db.setWithdraw_dapp(Arith.add(db.getWithdraw_dapp(), entity.getWithdraw_dapp()));
|
|
db.setRecharge(Arith.add(db.getRecharge(), entity.getRecharge()));
|
db.setRecharge_eth(Arith.add(db.getRecharge_eth(), entity.getRecharge_eth()));
|
db.setRecharge_usdt(Arith.add(db.getRecharge_usdt(), entity.getRecharge_usdt()));
|
db.setRecharge_usdc(Arith.add(db.getRecharge_usdc(), entity.getRecharge_usdc()));
|
db.setRecharge_btc(Arith.add(db.getRecharge_btc(), entity.getRecharge_btc()));
|
db.setRecharge_ht(Arith.add(db.getRecharge_ht(), entity.getRecharge_ht()));
|
db.setRecharge_ltc(Arith.add(db.getRecharge_ltc(), entity.getRecharge_ltc()));
|
// 充值返佣
|
db.setRechargeRecom(Arith.add(db.getRechargeRecom(), entity.getRechargeRecom()));
|
|
db.setWithdraw_all(Arith.add(db.getWithdraw_all(), entity.getWithdraw_all()));
|
db.setWithdraw(Arith.add(db.getWithdraw(), entity.getWithdraw()));
|
db.setWithdraw_eth(Arith.add(db.getWithdraw_eth(), entity.getWithdraw_eth()));
|
db.setWithdraw_btc(Arith.add(db.getWithdraw_btc(), entity.getWithdraw_btc()));
|
|
db.setAmount(Arith.add(db.getAmount(), entity.getAmount()));
|
db.setFee(Arith.add(db.getFee(), entity.getFee()));
|
db.setOrder_income(Arith.add(db.getOrder_income(), entity.getOrder_income()));
|
db.setFinance_amount(Arith.add(db.getFinance_amount(), entity.getFinance_amount()));
|
db.setFinance_income(Arith.add(db.getFinance_income(), entity.getFinance_income()));
|
db.setExchange_amount(Arith.add(db.getExchange_amount(), entity.getExchange_amount()));
|
db.setExchange_fee(Arith.add(db.getExchange_fee(), entity.getExchange_fee()));
|
db.setExchange_income(Arith.add(db.getExchange_income(), entity.getExchange_income()));
|
db.setCoin_income(Arith.add(db.getCoin_income(), entity.getCoin_income()));
|
db.setFurtures_amount(Arith.add(db.getFurtures_amount(), entity.getFurtures_amount()));
|
db.setFurtures_fee(Arith.add(db.getFurtures_fee(), entity.getFurtures_fee()));
|
db.setFurtures_income(Arith.add(db.getFurtures_income(), entity.getFurtures_income()));
|
|
db.setReco_num(db.getReco_num() + entity.getReco_num());
|
db.setRecharge_withdrawal_fee(
|
Arith.add(db.getRecharge_withdrawal_fee(), entity.getRecharge_withdrawal_fee()));
|
db.setGift_money(Arith.add(db.getGift_money(), entity.getGift_money()));
|
|
db.setMiner_amount(Arith.add(db.getMiner_amount(), entity.getMiner_amount()));
|
db.setMiner_income(Arith.add(db.getMiner_income(), entity.getMiner_income()));
|
|
// 质押2.0
|
db.setGalaxy_amount(Arith.add(db.getGalaxy_amount(), entity.getGalaxy_amount()));
|
db.setGalaxy_income(Arith.add(db.getGalaxy_income(), entity.getGalaxy_income()));
|
|
db.setThird_recharge_amount(Arith.add(db.getThird_recharge_amount(), entity.getThird_recharge_amount()));
|
db.setHolding_money(Arith.add(db.getHolding_money(), entity.getHolding_money()));
|
db.setTransfer_in_money(Arith.add(db.getTransfer_in_money(), entity.getTransfer_in_money()));
|
db.setTransfer_out_money(Arith.add(db.getTransfer_out_money(), entity.getTransfer_out_money()));
|
|
db.setExchange_lever_amount(Arith.add(db.getExchange_lever_amount(), entity.getExchange_lever_amount()));
|
db.setExchange_lever_fee(Arith.add(db.getExchange_lever_fee(), entity.getExchange_lever_fee()));
|
db.setExchange_lever_order_income(Arith.add(db.getExchange_lever_order_income(), entity.getExchange_lever_order_income()));
|
|
ApplicationUtil.executeUpdate(db);
|
setCache(db);
|
} else {
|
ApplicationUtil.executeInsert(entity);
|
setCache(entity);
|
}
|
}
|
|
public void saveRechargeHandle(Serializable partyId, double amount, String symbol) {
|
if ("USDT_DAPP".equals(symbol)) {
|
Party party = this.partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setRecharge_dapp(amount);
|
save(userData);
|
return;
|
}
|
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = this.partyService.cachePartyBy(partyId, true);
|
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
|
if ("usdt".equals(symbol)) {
|
userData.setRecharge(amount);
|
userData.setRecharge_usdt(amount);
|
} else {
|
List<Realtime> realtime_list = this.dataService.realtime(symbol);
|
|
Realtime realtime = null;
|
if (realtime_list.size() > 0) {
|
realtime = realtime_list.get(0);
|
} else {
|
throw new BusinessException("系统错误,请稍后重试");
|
}
|
if ("usdc".equals(symbol)) {
|
userData.setRecharge(Arith.mul(amount, realtime.getClose()));
|
userData.setRecharge_usdc(amount);
|
}
|
if ("btc".equals(symbol)) {
|
userData.setRecharge(Arith.mul(amount, realtime.getClose()));
|
userData.setRecharge_btc(amount);
|
}
|
if ("eth".equals(symbol)) {
|
userData.setRecharge(Arith.mul(amount, realtime.getClose()));
|
userData.setRecharge_eth(amount);
|
}
|
if ("ht".equals(symbol)) {
|
userData.setRecharge(Arith.mul(amount, realtime.getClose()));
|
userData.setRecharge_ht(amount);
|
}
|
if ("ltc".equals(symbol)) {
|
userData.setRecharge(Arith.mul(amount, realtime.getClose()));
|
userData.setRecharge_ltc(amount);
|
}
|
}
|
|
save(userData);
|
}
|
|
public void saveRechargeHandleDapp(Serializable partyId, double amount,String symbol) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
if ("usdt".equals(symbol)) userData.setRecharge_dapp(amount);
|
|
save(userData);
|
}
|
|
/**
|
* 更新充值返佣
|
*/
|
public void saveUserDataForRechargeRecom(String partyId, double amount) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setRechargeRecom(amount);
|
|
save(userData);
|
}
|
|
public void saveWithdrawHandle(Serializable partyId, double amount, double amount_fee,String symbol) {
|
System.out.println("saveWithdrawHandle -> partyId:" + partyId);
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
|
if (StringUtils.isEmpty(symbol)||"usdt".equals(symbol)) {
|
userData.setWithdraw(amount);
|
userData.setRecharge_withdrawal_fee(amount_fee);
|
userData.setWithdraw_all(amount);
|
} else {
|
List<Realtime> realtime_list = this.dataService.realtime(symbol);
|
Realtime realtime = null;
|
if (realtime_list.size() > 0) {
|
realtime = realtime_list.get(0);
|
} else {
|
throw new BusinessException("系统错误,请稍后重试");
|
}
|
if ("btc".equals(symbol)) {
|
userData.setRecharge_withdrawal_fee(Arith.mul(amount_fee, realtime.getClose()));
|
userData.setWithdraw_btc(amount);
|
userData.setWithdraw_all(Arith.mul(amount, realtime.getClose()));
|
}
|
if ("eth".equals(symbol)) {
|
userData.setRecharge_withdrawal_fee(Arith.mul(amount_fee, realtime.getClose()));
|
userData.setWithdraw_eth(amount);
|
userData.setWithdraw_all(Arith.mul(amount, realtime.getClose()));
|
}
|
}
|
|
save(userData);
|
}
|
|
public void saveWithdrawHandleDapp(Serializable partyId, double amount, double amount_fee,String symbol) {
|
System.out.println("saveWithdrawHandleDapp -> partyId:" + partyId);
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
|
if (StringUtils.isEmpty(symbol) || "usdt".equals(symbol)) {
|
userData.setWithdraw_dapp(amount);
|
}
|
|
save(userData);
|
}
|
|
public void saveClose(ContractOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setAmount(order.getDeposit_open());
|
userData.setFee(order.getFee());
|
if(order.getAmount_close()< 0) order.setAmount_close(0);
|
userData.setOrder_income(Arith.sub(order.getAmount_close(), order.getDeposit_open()));
|
|
save(userData);
|
}
|
|
/**
|
* 交割奖励
|
* @param partyId
|
* @param profit
|
*/
|
public void saveFuturesProfit(String partyId,double profit) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setFurtures_income(profit);
|
|
save(userData);
|
}
|
|
/**
|
* 矿机买入
|
*/
|
@Override
|
public void saveMinerBuy(MinerOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setMiner_amount(order.getAmount());
|
|
save(userData);
|
}
|
|
/**
|
* 矿机赎回
|
*/
|
@Override
|
public void saveMinerClose(MinerOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setMiner_amount(Arith.sub(0, order.getAmount()));
|
|
save(userData);
|
}
|
|
/**
|
* 矿机利息
|
*
|
* @param partyId 获利人
|
* @param profit 利息
|
*/
|
@Override
|
public void saveMinerProfit(String partyId, double profit) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setMiner_income(profit);
|
|
save(userData);
|
}
|
|
/**
|
* 质押2.0收益
|
*/
|
public void saveUserDataForGalaxy(String partyId, double amount, boolean ifIncome) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
if (ifIncome) {
|
System.out.println("质押2.0 更新userdata 收益 " + amount);
|
userData.setGalaxy_income(amount);
|
}else {
|
System.out.println("质押2.0 更新userdata 下单金额 " + amount);
|
userData.setGalaxy_amount(amount);
|
}
|
|
save(userData);
|
}
|
|
/**
|
* 矿机利息
|
* @param partyId 获利人
|
* @param profit 利息
|
*/
|
@Override
|
public void saveGiftMoneyHandle(Serializable partyId, double amount) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setGift_money(amount);
|
|
save(userData);
|
|
}
|
|
public void setUserRecomService(UserRecomService userRecomService) {
|
this.userRecomService = userRecomService;
|
}
|
|
public void setSecUserService(SecUserService secUserService) {
|
this.secUserService = secUserService;
|
}
|
|
@Override
|
public ChildrenLever cacheChildrenLever4(Serializable partyId) {
|
ChildrenLever childrenLever = new ChildrenLever();
|
/**
|
* lever1
|
*/
|
List<UserRecom> userrecom_lever1 = userRecomService.findRecoms(partyId);
|
for (int i = 0; i < userrecom_lever1.size(); i++) {
|
UserRecom userRecom = userrecom_lever1.get(i);
|
childrenLever.getLever1().add(userRecom.getPartyId().toString());
|
}
|
|
/**
|
* lever2
|
*/
|
if (childrenLever.getLever1().size() == 0) return childrenLever;
|
|
for (int i = 0; i < childrenLever.getLever1().size(); i++) {
|
List<UserRecom> userrecom_lever2 = userRecomService.findRecoms(childrenLever.getLever1().get(i));
|
for (int j = 0; j < userrecom_lever2.size(); j++) {
|
UserRecom userRecom = userrecom_lever2.get(j);
|
childrenLever.getLever2().add(userRecom.getPartyId().toString());
|
}
|
}
|
|
/**
|
* lever3
|
*/
|
if (childrenLever.getLever2().size() == 0) return childrenLever;
|
|
for (int i = 0; i < childrenLever.getLever2().size(); i++) {
|
List<UserRecom> userrecom_lever3 = userRecomService.findRecoms(childrenLever.getLever2().get(i));
|
for (int j = 0; j < userrecom_lever3.size(); j++) {
|
childrenLever.getLever3().add(userrecom_lever3.get(j).getPartyId().toString());
|
}
|
}
|
|
return childrenLever;
|
}
|
|
@Override
|
public void saveRegister(Serializable partyId) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
UserRecom userRecom = this.userRecomService.findByPartyId(partyId);
|
if (userRecom == null) return;
|
|
List<UserRecom> parents = this.userRecomService.getParents(userRecom.getPartyId());
|
int loop = 4;
|
for (int i = 0; i < parents.size(); i++) {
|
Party party_parent = partyService.cachePartyBy(parents.get(i).getReco_id(), true);
|
if (Constants.SECURITY_ROLE_MEMBER.equals(party_parent.getRolename()) && loop > 0) {
|
UserData userData_reco = new UserData();
|
userData_reco.setRolename(party_parent.getRolename());
|
userData_reco.setCreateTime(new Date());
|
userData_reco.setPartyId(parents.get(i).getReco_id());
|
userData_reco.setReco_num(1);
|
save(userData_reco);
|
|
UserDataSum userDataSum = this.saveBySum(parents.get(i).getReco_id().toString());
|
userDataSum.setReco_num(userDataSum.getReco_num() + 1);
|
this.updateSum(userDataSum);
|
loop--;
|
}
|
}
|
}
|
|
/**
|
* 资金盘定制化需求,等盘口下架可以删除
|
*/
|
public List<Map<String, Object>> getChildrenLevelPagedForGalaxy(int pageNo, int pageSize, String partyId, Integer levelNum) {
|
if (pageNo <= 0) pageNo = 1;
|
Page page = new Page(pageNo, pageSize, Integer.MAX_VALUE);
|
|
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
|
ChildrenLever children = cacheChildrenLever4(partyId);
|
// 获取子代partyId
|
List<String> level = new ArrayList<String>();
|
if (levelNum == 1) {
|
level = children.getLever1();
|
}
|
if (levelNum == 2) {
|
level = children.getLever2();
|
}
|
if (levelNum == 3) {
|
level = children.getLever3();
|
}
|
if (level == null || level.isEmpty()) {
|
return list;
|
}
|
|
String inSubStatement=level.stream().filter(le->null!=le&&!le.trim().isEmpty()).map(le->"'"+le.trim()+"'").collect(Collectors.joining(",","(",") LIMIT ?,?"));
|
String partySql=new StringBuilder("SELECT UUID partyId,USERNAME username FROM PAT_PARTY WHERE UUID IN").append(inSubStatement).toString();
|
List<Map> element=ApplicationUtil.executeDQL(partySql,new Object[] {page.getFirstElementNumber(),pageSize},Map.class);
|
page.setElements(element);
|
|
Map<String, Object> element_map = new HashMap<String, Object>();
|
for (int i = 0; i < element.size(); i++) {
|
element_map = (Map<String, Object>) element.get(i);
|
String childrenPartyId = element_map.get("partyId").toString();
|
ChildrenLever childrenLever = cacheChildrenLever4(childrenPartyId);
|
element_map.put("reco_sum", childrenLever.getLever1().size());
|
// list里面的总业绩
|
Map<String, UserData> map = cacheByPartyId(childrenPartyId);
|
double sum = 0;
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
sum += userData.getGalaxy_income();
|
}
|
}
|
|
element_map.put("recharge_sum", sum);
|
|
list.add(element_map);
|
}
|
return list;
|
}
|
|
/**
|
* 交易所
|
*/
|
public List<Map<String, Object>> getChildrenLevelPaged(int pageNo, int pageSize, String partyId, Integer levelNum) {
|
if (pageNo <= 0) pageNo = 1;
|
Page page = new Page(pageNo, pageSize, Integer.MAX_VALUE);
|
|
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
|
ChildrenLever children = cacheChildrenLever4(partyId);
|
// 获取子代partyId
|
List<String> level = new ArrayList<String>();
|
if (levelNum == 1) {
|
level = children.getLever1();
|
}
|
if (levelNum == 2) {
|
level = children.getLever2();
|
}
|
if (levelNum == 3) {
|
level = children.getLever3();
|
}
|
|
if (level == null || level.isEmpty()) {
|
return list;
|
}
|
|
String inSubStatement=level.stream().filter(le->null!=le&&!le.trim().isEmpty()).map(le->"'"+le.trim()+"'").collect(Collectors.joining(",","(",") LIMIT ?,?"));
|
String partySql=new StringBuilder("SELECT UUID partyId,USERNAME username,KYC_AUTHORITY kyc_authority FROM PAT_PARTY WHERE UUID IN").append(inSubStatement).toString();
|
List<Map> element=ApplicationUtil.executeDQL(partySql,new Object[] {page.getFirstElementNumber(),pageSize},Map.class);
|
page.setElements(element);
|
|
Map<String, Object> element_map = new HashMap<String, Object>();
|
for (int i = 0; i < element.size(); i++) {
|
element_map = (Map<String, Object>) element.get(i);
|
String childrenPartyId = element_map.get("partyId").toString();
|
ChildrenLever childrenLever = cacheChildrenLever4(childrenPartyId);
|
// 获取子代partyId
|
List<String> level_children = new ArrayList<String>();
|
if (levelNum == 1) {
|
level_children = childrenLever.getLever1();
|
}
|
if (levelNum == 2) {
|
level_children = childrenLever.getLever2();
|
}
|
if (levelNum == 3) {
|
level_children = childrenLever.getLever3();
|
}
|
element_map.put("reco_sum", level_children.size());
|
|
// list里面的总业绩
|
Map<String, UserData> map = cacheByPartyId(childrenPartyId);
|
double sum = 0;
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
sum += userData.getRecharge();
|
}
|
}
|
|
element_map.put("recharge_sum", sum);
|
|
list.add(element_map);
|
}
|
return list;
|
}
|
|
/**
|
* 获取所有下级列表 - IoeAi定制需求
|
*/
|
public List<Map<String, Object>> getAllChildrenPaged(int pageNo, int pageSize, String partyId){
|
if (pageNo <= 0) pageNo = 1;
|
Page page = new Page(pageNo, pageSize, Integer.MAX_VALUE);
|
|
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
|
List<String> childrens = userRecomService.findChildren(partyId);
|
if (null == childrens || childrens.isEmpty()) return list;
|
|
String inSubStatement=childrens.stream().filter(le->null!=le&&!le.trim().isEmpty()).map(le->"'"+le.trim()+"'").collect(Collectors.joining(",","(",") LIMIT ?,?"));
|
String partySql=new StringBuilder("SELECT USERNAME username,UUID partyId FROM PAT_PARTY WHERE UUID IN").append(inSubStatement).toString();
|
List<Map> element=ApplicationUtil.executeDQL(partySql,new Object[] {page.getFirstElementNumber(),pageSize},Map.class);
|
page.setElements(element);
|
|
Map<String, Object> element_map = new HashMap<String, Object>();
|
for (int i = 0; i < element.size(); i++) {
|
element_map = (Map<String, Object>) element.get(i);
|
String levelPartyId = element_map.get("partyId").toString();
|
List<String> levelChildrens = userRecomService.findChildren(levelPartyId);
|
|
// list里面的总业绩 - 所有下级的 收益之和
|
double sum = 0;
|
for (String id : levelChildrens) {
|
Map<String, UserData> map = cacheByPartyId(id);
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
sum += userData.getGalaxy_income();
|
}
|
}
|
}
|
|
element_map.put("reco_sum", levelChildrens.size());
|
element_map.put("recharge_sum", sum);
|
list.add(element_map);
|
}
|
return list;
|
}
|
|
/**
|
* 交易所-推广数据汇总
|
*/
|
public Map<String, String> getPromoteData(String partyId, Map<String, String> data, Date startTime, Date endTime) {
|
ChildrenLever children = cacheChildrenLever4(partyId);
|
// 获取子代partyId
|
List<String> level1 = new ArrayList<String>();
|
List<String> level2 = new ArrayList<String>();
|
List<String> level3 = new ArrayList<String>();
|
level1 = children.getLever1();
|
level2 = children.getLever2();
|
level3 = children.getLever3();
|
|
Map<String, String> peoples = new HashMap<>();
|
double rechangeAmount = 0;
|
for (String value1 : level1) {
|
Map<String, UserData> map = cacheByPartyId(value1);
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
if (userData.getRecharge() <= 0) {
|
continue;
|
}
|
if (null != startTime && null != endTime) {
|
Date createTime = userData.getCreateTime();
|
if (createTime.after(endTime) && createTime.before(startTime)) {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
} else {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
}
|
}
|
}
|
|
for (String value2 : level2) {
|
Map<String, UserData> map = cacheByPartyId(value2);
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
if (userData.getRecharge() <= 0) {
|
continue;
|
}
|
if (null != startTime && null != endTime) {
|
Date createTime = userData.getCreateTime();
|
if (createTime.after(endTime) && createTime.before(startTime)) {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
} else {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
}
|
}
|
}
|
|
for (String value3 : level3) {
|
Map<String, UserData> map = cacheByPartyId(value3);
|
if (null != map && map.size() > 0) {
|
for (UserData userData : map.values()) {
|
if (userData.getRecharge() <= 0) {
|
continue;
|
}
|
if (null != startTime && null != endTime) {
|
Date createTime = userData.getCreateTime();
|
if (createTime.after(endTime) && createTime.before(startTime)) {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
} else {
|
rechangeAmount += userData.getRecharge();
|
peoples.put(String.valueOf(userData.getPartyId()), "");
|
}
|
}
|
}
|
}
|
|
data.put("peopleNum", String.valueOf(peoples.size()));
|
data.put("rechangeAmount", String.valueOf(rechangeAmount));
|
return data;
|
}
|
|
/**
|
* 三方充值
|
*/
|
public void saveThirdRechargeMoneyHandle(Serializable partyId, double amount) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setThird_recharge_amount(amount);
|
userData.setRecharge(amount);
|
|
save(userData);
|
|
}
|
/**
|
* 持有金额(钱包+扩展钱包)
|
* @param partyId
|
* @param amount
|
*/
|
public void saveHodingMoneyHandle(Serializable partyId, double amount) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setHolding_money(amount);
|
|
save(userData);
|
|
}
|
|
/**
|
* 根据日期获取当日充值数
|
* @param date 字符串日期,"2020-01-01"
|
* @return
|
*/
|
public int filterRechargeByDate(String date) {
|
int sum = 0;
|
List<Map<String, UserData>> list = new ArrayList<>(cache.values());
|
for(Map<String, UserData> ud:list) {
|
UserData userData = ud.get(date);
|
if(userData!=null&&userData.getRecharge()>0) {//当日有充值
|
sum++;
|
}
|
}
|
return sum;
|
}
|
|
/**
|
* 转账
|
* @param byPartyId 转出用户id
|
* @param toPartyId 转入用户id
|
* @param outAmountToUsdt 转出金额(USDT计价)
|
* @param inAmountToUsdt 转入金额(USDT计价)
|
*/
|
public void saveTransferMoneyHandle(String byPartyId,String toPartyId, double outAmountToUsdt, double inAmountToUsdt) {
|
saveTransferOutMoneyHandle(byPartyId,outAmountToUsdt);
|
saveTransferInMoneyHandle(toPartyId,inAmountToUsdt);
|
}
|
|
/**
|
* 转入金额
|
* @param partyId
|
* @param amountToUsdt
|
*/
|
public void saveTransferInMoneyHandle(String partyId, double amountToUsdt) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setTransfer_in_money(amountToUsdt);
|
|
save(userData);
|
}
|
|
/**
|
* 转出金额
|
* @param partyId
|
* @param amountToUsdt
|
*/
|
public void saveTransferOutMoneyHandle(String partyId, double amountToUsdt) {
|
SecUser user = this.secUserService.findUserByPartyId(partyId);
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(partyId, true);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(partyId);
|
userData.setTransfer_out_money(amountToUsdt);
|
save(userData);
|
}
|
|
public void setPartyService(PartyService partyService) {
|
this.partyService = partyService;
|
}
|
|
public void setDataService(DataService dataService) {
|
this.dataService = dataService;
|
}
|
|
@Override
|
public void saveBuy(ExchangeApplyOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setExchange_amount(order.getVolume());
|
userData.setExchange_fee(0);
|
|
save(userData);
|
|
}
|
|
public void saveSell(ExchangeApplyOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
|
Realtime realtime = null;
|
if (realtime_list.size() > 0) {
|
realtime = realtime_list.get(0);
|
} else {
|
throw new BusinessException("系统错误,请稍后重试");
|
}
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setExchange_amount(Arith.mul(realtime.getClose(), order.getVolume()));
|
userData.setExchange_fee(Arith.mul(realtime.getClose(), order.getFee()));
|
userData.setExchange_income(0);
|
|
save(userData);
|
}
|
|
/**
|
* 理财产品平仓
|
*/
|
public void saveSellFinance(FinanceOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setFinance_amount(order.getAmount());
|
userData.setFinance_income(order.getProfit());
|
|
save(userData);
|
}
|
|
|
/**
|
* 交割合约平仓
|
*/
|
@Override
|
public void saveFuturesClose(FuturesOrder order) {
|
SecUser user = this.secUserService.findUserByPartyId(order.getPartyId());
|
user.getRoles();
|
boolean guest = false;
|
for (Role role : user.getRoles()) {
|
if (Constants.SECURITY_ROLE_GUEST.equals(role.getRoleName())||Constants.SECURITY_ROLE_TEST.equals(role.getRoleName())) {
|
guest = true;
|
}
|
}
|
|
if (guest) return;
|
|
Party party = partyService.cachePartyBy(order.getPartyId(), false);
|
UserData userData = new UserData();
|
userData.setRolename(party.getRolename());
|
userData.setCreateTime(new Date());
|
userData.setPartyId(order.getPartyId());
|
userData.setFurtures_amount(order.getVolume());
|
userData.setFurtures_fee(order.getFee());
|
userData.setFurtures_income(order.getProfit());
|
|
save(userData);
|
}
|
}
|