package com.yami.trading.service.user.impl; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yami.trading.bean.contract.domain.ContractOrder; import com.yami.trading.bean.data.domain.Realtime; import com.yami.trading.bean.exchange.ExchangeApplyOrder; import com.yami.trading.bean.finance.FinanceOrder; import com.yami.trading.bean.future.domain.FuturesOrder; import com.yami.trading.bean.item.domain.Item; import com.yami.trading.bean.miner.MinerOrder; import com.yami.trading.bean.model.*; import com.yami.trading.bean.syspara.domain.Syspara; import com.yami.trading.bean.user.dto.ChildrenLever; import com.yami.trading.bean.user.dto.UserBenefitsDto; import com.yami.trading.bean.user.dto.UserDataWithdrawLimitDto; import com.yami.trading.common.constants.Constants; import com.yami.trading.common.exception.YamiShopBindException; import com.yami.trading.common.util.ApplicationUtil; import com.yami.trading.common.util.Arith; import com.yami.trading.common.util.DateUtil; import com.yami.trading.common.util.DateUtils; import com.yami.trading.dao.user.UserDataMapper; import com.yami.trading.service.MoneyLogService; import com.yami.trading.service.WalletService; import com.yami.trading.service.contract.ContractOrderService; import com.yami.trading.service.data.DataService; import com.yami.trading.service.item.ItemService; import com.yami.trading.service.syspara.SysparaService; import com.yami.trading.service.user.UserDataService; import com.yami.trading.service.user.UserDataSumService; import com.yami.trading.service.user.UserRecomService; import com.yami.trading.service.user.UserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @Service @Slf4j public class UserDataServiceImpl extends ServiceImpl implements UserDataService { @Autowired UserService userService; @Autowired UserRecomService userRecomService; @Autowired UserDataSumService userDataSumService; @Autowired UserService secUserService; @Autowired DataService dataService; @Resource NamedParameterJdbcOperations namedParameterJdbcTemplate; @Autowired RedisTemplate redisTemplate; @Autowired SysparaService sysparaService; String REDIS_KEY = "userdata:"; @Autowired private ItemService itemService; private Map> cache = new ConcurrentHashMap<>(); @Autowired WalletService walletService; @Autowired MoneyLogService moneyLogService; @PostConstruct public void init() { List all = list(); if(null == all) all = new ArrayList<>(); for (UserData item : all) { if(null == item) continue; this.setCache(item); } } private UserData findBydate(String userId, Date date) { Date startDate = DateUtil.minDate(date); ; Date endDate = DateUtil.maxDate(date); return getOne(Wrappers.query().lambda().between(UserData::getCreateTime, startDate, endDate) .eq(UserData::getUserId, userId)); } @Override public Map cacheByPartyId(String partyId) { return cache.get(partyId); } @Override public Page listUserGenefits(Page page, Date startTime, Date endTime, String userName, List children) { baseMapper.listUserGenefits(page, startTime, endTime, userName, children); compute(page.getRecords()); return page; } /** * COM盘(首页统计模板)定制需求 下盘后删除 */ @Override public Map queryUserDataByUserId(String userId) { List list = baseMapper.selectList(new QueryWrapper().eq("user_id", userId)); return buildData(list); } /** * 获取今日充值的人数 * * @return */ @Override public long countTodayRechargeUser(List userIds) { Date now = new Date(); LambdaQueryWrapper lambdaQueryWrapper = Wrappers.query().lambda().between(UserData::getCreateTime, DateUtil.minDate(now), DateUtil.maxDate(now)).gt(UserData::getRecharge, 0); if (CollectionUtil.isNotEmpty(userIds)) { lambdaQueryWrapper.in(UserData::getUserId, userIds); } return count(lambdaQueryWrapper); } @Override public UserBenefitsDto daySumData(Date startTime, Date endTime, List userIds) { return baseMapper.daySumData(startTime, endTime, userIds); } @Override public Map daySumDataOld(String day, List userIds) { Map parameters = new HashMap(); StringBuffer queryString = new StringBuffer("select "); // queryString.append("DATE_FORMAT(ud.CREATE_TIME,\"%Y-%m-%d\") AS date, ");//日期 queryString.append("ifnull(sum(ud.recharge),0) as recharge,ifnull(sum(ud.recharge_usdt),0) as recharge_usdt,ifnull(sum(ud.recharge_eth),0) as recharge_eth,ifnull(sum(ud.recharge_btc),0) as recharge_btc,ifnull(sum(ud.recharge_ht),0) as recharge_ht,ifnull(sum(ud.recharge_ltc),0) as recharge_ltc," + "ifnull(sum(ud.withdraw),0) as withdraw,ifnull(sum(ud.recharge_withdrawal_fee),0) as recharge_withdrawal_fee,ifnull(sum(ud.recharge_usdt)-sum(ud.withdraw),0) as balance_amount, ");//充提 queryString.append("ifnull(sum(ud.fee),0) as fee,ifnull(sum(ud.order_income),0) as order_income, ");//永续 queryString.append("ifnull(sum(ud.finance_amount),0) as finance_amount,ifnull(sum(ud.finance_income),0) as finance_income, ");//理财 queryString.append("ifnull(sum(ud.exchange_fee),0) as exchange_fee,ifnull(sum(ud.exchange_income),0) as exchange_income, ");//币币 queryString.append("ifnull(sum(ud.furtures_fee),0) as furtures_fee,ifnull(sum(ud.furtures_income),0) as furtures_income, ");//交割 queryString.append("ifnull(sum(ud.miner_amount),0) as miner_amount,ifnull(sum(ud.miner_income),0) as miner_income, ");//矿机 queryString.append("ifnull(sum(ud.third_recharge_amount),0) as third_recharge_amount, ");//三方充值 queryString.append("ifnull(sum(ud.exchange_lever_amount),0) as exchange_lever_amount,ifnull(sum(ud.exchange_lever_fee),0) as exchange_lever_fee,ifnull(sum(ud.exchange_lever_order_income),0) as exchange_lever_order_income ");//币币杠杆 queryString.append("from t_userdata ud "); queryString.append("where 1=1 "); queryString.append("and ud.rolename ='"+Constants.SECURITY_ROLE_MEMBER+"' "); if (CollectionUtil.isNotEmpty(userIds)) { queryString.append(" and ud.user_id in (:children) "); parameters.put("children", userIds); } if (StringUtils.isNotEmpty(day)) { queryString.append("and date(ud.create_time) = date(:day) "); parameters.put("day", DateUtils.toDate(day)); } List> queryForList = this.namedParameterJdbcTemplate.queryForList( queryString.toString(), parameters); computeSum(queryForList,false); return queryForList.get(0); } private void computeSum(List> datas,boolean isSum) { if(CollectionUtils.isEmpty(datas)) return; Double totle_income=0d; Double totle_fee = 0d; Double business_profit = 0d;//交易盈亏 Double fin_miner_amount = 0d;//理财 矿机 交易额 Double fin_miner_income = 0d;//理财 矿机 收益 for(Map data:datas) { totle_income=0d; totle_fee = 0d; business_profit = 0d; fin_miner_amount = 0d; fin_miner_income = 0d; if(null != data.get("order_income")) data.put("order_income", Arith.sub(0, new Double(data.get("order_income").toString())));//订单收益负数 if(null != data.get("finance_income")) data.put("finance_income", Arith.sub(0, new Double(data.get("finance_income").toString())));//理财收益负数 if(null != data.get("exchange_income")) // data.put("exchange_income", Arith.sub(0, new Double(data.get("exchange_income").toString())));//币币收益负数 data.put("exchange_income",0);//币币收益负数 if(null != data.get("furtures_income")) data.put("furtures_income", Arith.sub(0, new Double(data.get("furtures_income").toString())));//交割收益负数 if (null != data.get("miner_income")) data.put("miner_income", Arith.sub(0, new Double(data.get("miner_income").toString())));// 矿机收益负数 if (null != data.get("exchange_lever_order_income")) data.put("exchange_lever_order_income", Arith.sub(0, new Double(data.get("exchange_lever_order_income").toString())));// 币币收益负数 if(!dataExistNull(data)) continue; totle_income = Arith.add(totle_income,new Double(data.get("recharge_withdrawal_fee").toString())); totle_income = Arith.add(totle_income,new Double(data.get("order_income").toString())); totle_income = Arith.add(totle_income,new Double(data.get("fee").toString())); totle_income = Arith.add(totle_income,new Double(data.get("finance_income").toString())); totle_income = Arith.add(totle_income,new Double(data.get("exchange_fee").toString())); totle_income = Arith.add(totle_income,new Double(0)); // totle_income = Arith.add(totle_income,new Double(data.get("exchange_income").toString())); totle_income = Arith.add(totle_income,new Double(data.get("furtures_fee").toString())); totle_income = Arith.add(totle_income,new Double(data.get("furtures_income").toString())); totle_income = Arith.add(totle_income,new Double(data.get("miner_income").toString())); totle_income = Arith.add(totle_income,new Double(data.get("exchange_lever_order_income").toString())); data.put("totle_income", totle_income); totle_fee = Arith.add(totle_fee, new Double(data.get("recharge_withdrawal_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("furtures_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_lever_fee").toString())); data.put("totle_fee", totle_fee); business_profit = Arith.add(business_profit, new Double(data.get("order_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("furtures_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_lever_order_income").toString())); data.put("business_profit", business_profit); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("finance_amount").toString())); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("miner_amount").toString())); data.put("fin_miner_amount", fin_miner_amount); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("finance_income").toString())); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("miner_income").toString())); data.put("fin_miner_income", fin_miner_income); data.put("recharge_btc", new BigDecimal(data.get("recharge_btc").toString()).setScale(8, RoundingMode.FLOOR).toPlainString());//订单收益负数 // data.put("recharge_usdt", new BigDecimal(data.get("recharge_usdt").toString()).setScale(4, RoundingMode.FLOOR).toPlainString()); } } /** * 矿机利息 */ @Override public void saveGiftMoneyHandle(String partyId, double amount) { User user = userService.getById(partyId); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } Date now = new Date(); UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(now); userData.setUserId(user.getUserId()); userData.setGiftMoney(amount); saveUserData(userData); } @Override public List> cacheByPartyIds(List partyIds) { if(CollectionUtils.isEmpty(partyIds)) return new LinkedList>(); List> result = new LinkedList>(); for(String id:partyIds) { result.add(cache.get(id)); } return result; } @Override public void saveRegister(String userId) { User user = userService.getById(userId); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } UserRecom userRecom = userRecomService.findByPartyId(userId); if (userRecom == null) { return; } List parents = this.userRecomService.getParents(userId); int loop = 4; for (int i = 0; i < parents.size(); i++) { // 找到推荐人 User party_parent = userService.getById(parents.get(i).getUserId()); 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.setUserId(parents.get(i).getUserId()); userData_reco.setRecoNum(1); save(userData_reco); UserDataSum userDataSum = saveBySum(parents.get(i).getUserId()); log.info(">>>> saveRegister前 推荐前人数为{}-> {}", userService.getById(userDataSum.getUserId()).getUserName(), userDataSum.getRecoNum()); userDataSum.setRecoNum(userDataSum.getRecoNum() + 1); userDataSumService.updateById(userDataSum); log.info(">>>> saveRegister后 推荐前人数为{}-> {}", userService.getById(userDataSum.getUserId()).getUserName(), userDataSum.getRecoNum()); loop--; } // if (Constants.SECURITY_ROLE_AGENT.equals(party_parent.getRoleName())) { // List userDataSums = userDataSumService.getByUserId(parents.get(i).getRecomUserId().toString()); // UserDataSum userDataSum = new UserDataSum(); // if (userDataSums.size() > 0) { // userDataSum = userDataSums.get(0); // } // userDataSum.setRecoNum(userDataSum.getRecoNum() + 1); // userDataSumService.saveOrUpdate(userDataSum); // } } } /** * 根据partyId获取UserDataSum */ public UserDataSum saveBySum(String partyId) { List list = userDataSumService.getByUserId(partyId); if (list.size() > 0) { return (UserDataSum) list.get(0); } UserDataSum userDataSum = new UserDataSum(); userDataSum.setUserId(partyId); userDataSumService.save(userDataSum); return userDataSum; } @Override public Page userAll(Page page, Date startTime, Date endTime, List userIds) { Page page1 = baseMapper.userAll(page, startTime, endTime,userIds); compute(page1.getRecords(), false); return page1; } @Override public Map sumAll(Date startTime, Date endTime, List userIds) { Map map = baseMapper.sumAll(startTime, endTime,userIds); List maps = new ArrayList<>(); maps.add(map); compute(maps, true); return maps.get(0); } /** * 统计的数据存在空时,不统计总额 * * @param data * @return */ private boolean dataExistNull(Map data) { if (null == data.get("recharge_withdrawal_fee")) return false; if (null == data.get("order_income")) return false; if (null == data.get("fee")) return false; if (null == data.get("finance_income")) return false; if (null == data.get("exchange_fee")) return false; if (null == data.get("exchange_income")) return false; if (null == data.get("furtures_fee")) return false; if (null == data.get("furtures_income")) return false; return true; } private void compute(List> datas) { DecimalFormat df4 = new DecimalFormat("#.####"); // 向下取整 df4.setRoundingMode(RoundingMode.FLOOR); if (org.apache.commons.collections.CollectionUtils.isEmpty(datas)) { return; } Double totle_income = 0d; Double totle_fee = 0d; Double business_profit = 0d;//交易盈亏 Double fin_miner_amount = 0d;//理财 矿机 交易额 Double fin_miner_income = 0d;//理财 矿机 收益 for (Map data : datas) { totle_income = 0d; totle_fee = 0d; business_profit = 0d; fin_miner_amount = 0d; fin_miner_income = 0d; if (null == data.get("reco_num")) { data.put("reco_num", 0); } // if(null!=data.get("rolename")) { // data.put("rolename", Constants.ROLE_MAP.get(data.get("rolename").toString())); // } if (null != data.get("order_income")) data.put("order_income", df4.format(Arith.sub(0, new Double(data.get("order_income").toString()))));//订单收益负数 if (null != data.get("finance_income")) data.put("finance_income", df4.format(Arith.sub(0, new Double(data.get("finance_income").toString()))));//理财收益负数 if (null != data.get("exchange_income")) // data.put("exchange_income", Arith.sub(0, new Double(data.get("exchange_income").toString())));//币币收益负数 data.put("exchange_income", 0);//币币收益负数 if (null != data.get("furtures_income")) data.put("furtures_income", df4.format(Arith.sub(0, new Double(data.get("furtures_income").toString()))));//交割收益负数 if (null != data.get("miner_income")) data.put("miner_income", df4.format(Arith.sub(0, new Double(data.get("miner_income").toString()))));// 矿机收益负数 if (null != data.get("exchange_lever_order_income")) data.put("exchange_lever_order_income", df4.format(Arith.sub(0, new Double(data.get("exchange_lever_order_income").toString()))));// 币币收益负数 if (!dataExistNull(data)) continue; totle_income = Arith.add(totle_income, new Double(data.get("recharge_withdrawal_fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("order_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("finance_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("exchange_fee").toString())); totle_income = Arith.add(totle_income, new Double(0)); // totle_income = Arith.add(totle_income,new Double(data.get("exchange_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("furtures_fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("furtures_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("miner_income").toString())); data.put("totle_income", df4.format(totle_income)); totle_fee = Arith.add(totle_fee, new Double(data.get("recharge_withdrawal_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("furtures_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_lever_fee").toString())); data.put("totle_fee", df4.format(totle_fee)); business_profit = Arith.add(business_profit, new Double(data.get("order_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("furtures_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_lever_order_income").toString())); data.put("business_profit", df4.format(business_profit)); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("finance_amount").toString())); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("miner_amount").toString())); data.put("fin_miner_amount", df4.format(fin_miner_amount)); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("finance_income").toString())); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("miner_income").toString())); data.put("fin_miner_income", df4.format(fin_miner_income)); } } private Map buildData(List list) { Map map = new HashMap<>(); BigDecimal totalIncome = BigDecimal.ZERO; BigDecimal todayIncome = BigDecimal.ZERO; String today = DateUtils.format(new Date(), DateUtils.DF_yyyyMMdd); for (UserData data : list) { totalIncome = totalIncome // 充提手续费 .add(BigDecimal.valueOf(data.getRechargeWithdrawalFee())) // 永续合约收益 .add(BigDecimal.valueOf(data.getOrderIncome())) // 永续合约手续费 .add(BigDecimal.valueOf(data.getFee())) // 理财收益 .add(BigDecimal.valueOf(data.getFinanceIncome())) // 币币手续费 .add(BigDecimal.valueOf(data.getExchangeFee())) // 交割合约手续费 .add(BigDecimal.valueOf(data.getFurturesFee())) // 交割合约收益 .add(BigDecimal.valueOf(data.getFurturesIncome())) // 矿机收益 .add(BigDecimal.valueOf(data.getMinerIncome())); if (today.equals(DateUtils.format(data.getCreateTime(), DateUtils.DF_yyyyMMdd))) { todayIncome = todayIncome // 充提手续费 .add(BigDecimal.valueOf(data.getRechargeWithdrawalFee())) // 永续合约收益 .add(BigDecimal.valueOf(data.getOrderIncome())) // 永续合约手续费 .add(BigDecimal.valueOf(data.getFee())) // 理财收益 .add(BigDecimal.valueOf(data.getFinanceIncome())) // 币币手续费 .add(BigDecimal.valueOf(data.getExchangeFee())) // 交割合约手续费 .add(BigDecimal.valueOf(data.getFurturesFee())) // 交割合约收益 .add(BigDecimal.valueOf(data.getFurturesIncome())) // 矿机收益 .add(BigDecimal.valueOf(data.getMinerIncome())); } } map.put("totalIncome", totalIncome.setScale(2, RoundingMode.HALF_DOWN)); map.put("todayIncome", todayIncome.setScale(2, RoundingMode.HALF_DOWN)); return map; } /** * 计算 统计时 * * @param datas * @param isSum */ private void compute(List datas, boolean isSum) { if (org.apache.commons.collections.CollectionUtils.isEmpty(datas)) return; Double totle_income = 0d; Double totle_fee = 0d; Double business_profit = 0d;//交易盈亏 Double fin_miner_amount = 0d;//理财 矿机 交易额 Double fin_miner_income = 0d;//理财 矿机 收益 for (Map data : datas) { totle_income = 0d; totle_fee = 0d; business_profit = 0d; fin_miner_amount = 0d; fin_miner_income = 0d; if (null != data.get("order_income")) data.put("order_income", new BigDecimal(Arith.sub(0, new Double(data.get("order_income").toString()))) .setScale(8, RoundingMode.FLOOR).toPlainString());//订单收益负数 if (null != data.get("finance_income")) data.put("finance_income",new BigDecimal( Arith.sub(0, new Double(data.get("finance_income").toString()))) .setScale(8, RoundingMode.FLOOR).toPlainString());//理财收益负数 if (null != data.get("exchange_income")) // data.put("exchange_income", Arith.sub(0, new Double(data.get("exchange_income").toString())));//币币收益负数 data.put("exchange_income", 0);//币币收益负数 if (null != data.get("furtures_income")) data.put("furtures_income", new BigDecimal(Arith.sub(0, new Double(data.get("furtures_income").toString()))) .setScale(8, RoundingMode.FLOOR).toPlainString());//交割收益负数 if (null != data.get("miner_income")) data.put("miner_income", new BigDecimal(Arith.sub(0, new Double(data.get("miner_income").toString()))).setScale(8, RoundingMode.FLOOR).toPlainString());// 矿机收益负数 if (null != data.get("exchange_lever_order_income")) data.put("exchange_lever_order_income",new BigDecimal( Arith.sub(0, new Double(data.get("exchange_lever_order_income").toString()))).setScale(8, RoundingMode.FLOOR).toPlainString());// 币币收益负数 if (!dataExistNull(data)) continue; totle_income = Arith.add(totle_income, new Double(data.get("recharge_withdrawal_fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("order_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("finance_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("exchange_fee").toString())); totle_income = Arith.add(totle_income, new Double(0)); // totle_income = Arith.add(totle_income,new Double(data.get("exchange_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("furtures_fee").toString())); totle_income = Arith.add(totle_income, new Double(data.get("furtures_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("miner_income").toString())); totle_income = Arith.add(totle_income, new Double(data.get("exchange_lever_order_income").toString())); data.put("totle_income", new BigDecimal(totle_income).setScale(8, RoundingMode.FLOOR).toPlainString() ); totle_fee = Arith.add(totle_fee, new Double(data.get("recharge_withdrawal_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("furtures_fee").toString())); totle_fee = Arith.add(totle_fee, new Double(data.get("exchange_lever_fee").toString())); data.put("totle_fee", new BigDecimal(totle_fee).setScale(8, RoundingMode.FLOOR).toPlainString()); business_profit = Arith.add(business_profit, new Double(data.get("order_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("furtures_income").toString())); business_profit = Arith.add(business_profit, new Double(data.get("exchange_lever_order_income").toString())); data.put("business_profit", new BigDecimal(business_profit).setScale(8, RoundingMode.FLOOR).toPlainString()); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("finance_amount").toString())); fin_miner_amount = Arith.add(fin_miner_amount, new Double(data.get("miner_amount").toString())); data.put("fin_miner_amount", new BigDecimal(fin_miner_amount).setScale(8, RoundingMode.FLOOR).toPlainString()); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("finance_income").toString())); fin_miner_income = Arith.add(fin_miner_income, new Double(data.get("miner_income").toString())); data.put("fin_miner_income",new BigDecimal( fin_miner_income).setScale(8, RoundingMode.FLOOR).toPlainString()); data.put("recharge_btc", new BigDecimal(data.get("recharge_btc").toString()).setScale(8, RoundingMode.FLOOR).toPlainString());//订单收益负数 } } @Override public void saveUserData(UserData entity) { try { UserData db = findBydate(entity.getUserId(), entity.getCreateTime()); if (db != null) { db.setRechargeDapp(Arith.add(db.getRechargeDapp(), entity.getRechargeDapp())); db.setWithdrawDapp(Arith.add(db.getWithdrawDapp(), entity.getWithdrawDapp())); db.setRecharge(Arith.add(db.getRecharge(), entity.getRecharge())); db.setRechargeEth(Arith.add(db.getRechargeEth(), entity.getRechargeEth())); db.setRechargeUsdt(Arith.add(db.getRechargeUsdt(), entity.getRechargeUsdt())); db.setRechargeBtc(Arith.add(db.getRechargeBtc(), entity.getRechargeBtc())); db.setRechargeHt(Arith.add(db.getRechargeHt(), entity.getRechargeHt())); db.setRechargeLtc(Arith.add(db.getRechargeLtc(), entity.getRechargeLtc())); // 充值返佣 db.setRechargeRecom(Arith.add(db.getRechargeRecom(), entity.getRechargeRecom())); db.setWithdrawAll(Arith.add(db.getWithdrawAll(), entity.getWithdrawAll())); db.setWithdraw(Arith.add(db.getWithdraw(), entity.getWithdraw())); db.setWithdrawEth(Arith.add(db.getWithdrawEth(), entity.getWithdrawEth())); db.setWithdrawBtc(Arith.add(db.getWithdrawBtc(), entity.getWithdrawBtc())); db.setAmount(Arith.add(db.getAmount(), entity.getAmount())); db.setFee(Arith.add(db.getFee(), entity.getFee())); db.setOrderIncome(Arith.add(db.getOrderIncome(), entity.getOrderIncome())); db.setFinanceAmount(Arith.add(db.getFinanceAmount(), entity.getFinanceAmount())); db.setFinanceIncome(Arith.add(db.getFinanceIncome(), entity.getFinanceIncome())); db.setExchangeAmount(Arith.add(db.getExchangeAmount(), entity.getExchangeAmount())); db.setExchangeFee(Arith.add(db.getExchangeFee(), entity.getExchangeFee())); db.setExchangeIncome(Arith.add(db.getExchangeIncome(), entity.getExchangeIncome())); db.setCoinIncome(Arith.add(db.getCoinIncome(), entity.getCoinIncome())); db.setFurturesAmount(Arith.add(db.getFurturesAmount(), entity.getFurturesAmount())); db.setFurturesFee(Arith.add(db.getFurturesFee(), entity.getFurturesFee())); db.setFurturesIncome(Arith.add(db.getFurturesIncome(), entity.getFurturesIncome())); db.setRecoNum(db.getRecoNum() + entity.getRecoNum()); db.setRechargeWithdrawalFee( Arith.add(db.getRechargeWithdrawalFee(), entity.getRechargeWithdrawalFee())); db.setGiftMoney(Arith.add(db.getGiftMoney(), entity.getGiftMoney())); db.setMinerAmount(Arith.add(db.getMinerAmount(), entity.getMinerAmount())); db.setMinerIncome(Arith.add(db.getMinerIncome(), entity.getMinerIncome())); // 质押2.0 db.setGalaxyAmount(Arith.add(db.getGalaxyAmount(), entity.getGalaxyAmount())); db.setGalaxyIncome(Arith.add(db.getGalaxyIncome(), entity.getGalaxyIncome())); db.setThirdRechargeAmount(Arith.add(db.getThirdRechargeAmount(), entity.getThirdRechargeAmount())); db.setHoldingMoney(Arith.add(db.getHoldingMoney(), entity.getHoldingMoney())); db.setTransferInMoney(Arith.add(db.getTransferInMoney(), entity.getTransferInMoney())); db.setTransferOutMoney(Arith.add(db.getTransferOutMoney(), entity.getTransferOutMoney())); db.setExchangeLeverAmount(Arith.add(db.getExchangeLeverAmount(), entity.getExchangeLeverAmount())); db.setExchangeLeverFee(Arith.add(db.getExchangeLeverFee(), entity.getExchangeLeverFee())); db.setExchangeLeverOrderIncome(Arith.add(db.getExchangeLeverOrderIncome(), entity.getExchangeLeverOrderIncome())); updateById(db); setCache(db); // log.info("saveUserData 00 => "+ JSONObject.toJSONString(db)); } else { save(entity); setCache(entity); // log.info("saveUserData 00 => "+ JSONObject.toJSONString(entity)); } } catch (Exception e) { log.error("saveUserData 异常", e); } } public void setCache(UserData entity) { Map map_party = cache.get(entity.getUserId()); if (map_party == null) { map_party = new ConcurrentHashMap(); } if(null != entity.getCreateTime()) { map_party.put(DateUtils.format(entity.getCreateTime(), DateUtils.DEFAULT_DATE_FORMAT), entity); } cache.put(entity.getUserId(), map_party); } public void put(String userId, Map map_party) { redisTemplate.opsForValue().set(REDIS_KEY + userId, map_party); } @Override public List> findByPartyIds(List children) { List users = list(Wrappers.query().lambda().in(UserData::getUserId, children)); List> mapList = new ArrayList<>(); for (UserData userData : users) { Map map = new HashMap<>(); map.put(userData.getUserId(), userData); mapList.add(map); } return mapList; } /** * 资金盘定制化需求,等盘口下架可以删除 */ @Override public List> getChildrenLevelPagedForGalaxy(int pageNo, int pageSize, String partyId, Integer levelNum) { List> list = new ArrayList>(); ChildrenLever children = cacheChildrenLever4(partyId); // 获取子代partyId List level = new ArrayList(); if (levelNum == 1) { level = children.getLever1(); } if (levelNum == 2) { level = children.getLever2(); } if (levelNum == 3) { level = children.getLever3(); } // if (levelNum == 4) { // level = children.getLever4(); // } if (level == null || level.isEmpty()) { return list; } Page page = new Page(pageNo, pageSize); userService.page(page, Wrappers.query().lambda().in(User::getUserId, level)); for (int i = 0; i < page.getRecords().size(); i++) { Map element_map = new HashMap(); User user = page.getRecords().get(i); element_map.put("username", user.getUserName()); element_map.put("partyId", user.getUserId()); String childrenPartyId = element_map.get("partyId").toString(); ChildrenLever childrenLever = cacheChildrenLever4(childrenPartyId); // 获取子代partyId List level_children = new ArrayList(); if (levelNum == 1) { level_children = childrenLever.getLever1(); } if (levelNum == 2) { level_children = childrenLever.getLever2(); } if (levelNum == 3) { level_children = childrenLever.getLever3(); } // if (levelNum == 4) { // level_children = childrenLever.getLever4(); // } element_map.put("reco_sum", level_children.size()); // list里面的总业绩 Map map = cacheByPartyId(childrenPartyId); double sum = 0; double sumRechargeRecom = 0; if (null != map && map.size() > 0) { for (UserData userData : map.values()) { sum += userData.getRecharge(); sumRechargeRecom += userData.getRechargeRecom(); } } element_map.put("recharge_sum", sum); element_map.put("recharge_recom",sumRechargeRecom); list.add(element_map); } return list; } @Override public ChildrenLever cacheChildrenLever4(String partyId) { ChildrenLever childrenLever = new ChildrenLever(); /** * lever1 */ List userrecom_lever1 = userRecomService.findRecoms(partyId); for (int i = 0; i < userrecom_lever1.size(); i++) { childrenLever.getLever1().add(userrecom_lever1.get(i).getRecomUserId().toString()); } /** * lever2 */ if (childrenLever.getLever1().size() == 0) { return childrenLever; } for (int i = 0; i < childrenLever.getLever1().size(); i++) { List userrecom_lever2 = userRecomService.findRecoms(childrenLever.getLever1().get(i)); for (int j = 0; j < userrecom_lever2.size(); j++) { childrenLever.getLever2().add(userrecom_lever2.get(j).getRecomUserId().toString()); } } /** * lever3 */ if (childrenLever.getLever2().size() == 0) { return childrenLever; } for (int i = 0; i < childrenLever.getLever2().size(); i++) { List userrecom_lever3 = userRecomService.findRecoms(childrenLever.getLever2().get(i)); for (int j = 0; j < userrecom_lever3.size(); j++) { childrenLever.getLever3().add(userrecom_lever3.get(j).getRecomUserId().toString()); } } // /** // * lever4 // */ // if (childrenLever.getLever3().size() == 0) { // return childrenLever; // } // for (int i = 0; i < childrenLever.getLever3().size(); i++) { // List userrecom_lever4 = userRecomService.findRecoms(childrenLever.getLever3().get(i)); // for (int j = 0; j < userrecom_lever4.size(); j++) { // childrenLever.getLever4().add(userrecom_lever4.get(j).getPartyId().toString()); // } // // } return childrenLever; } @Override public void saveWithdrawHandle(String partyId, double amount, double amount_fee, String symbol) { System.out.println("saveWithdrawHandle -> partyId:" + partyId); User user = userService.getById(partyId); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(partyId); if (StringUtils.isEmpty(symbol) || "usdt".equals(symbol)) { userData.setWithdraw(amount); userData.setRechargeWithdrawalFee(amount_fee); userData.setWithdrawAll(amount); } else { // TODO: 2023/4/21 = this.dataService.realtime(symbol); List realtime_list = dataService.realtime(symbol); Realtime realtime = null; if (realtime_list.size() > 0) { realtime = realtime_list.get(0); } else { throw new YamiShopBindException("系统错误,请稍后重试"); } if ("btc".equals(symbol)) { userData.setRechargeWithdrawalFee(Arith.mul(amount_fee, realtime.getClose())); userData.setWithdrawBtc(amount); userData.setWithdrawAll(Arith.mul(amount, realtime.getClose())); } if ("eth".equals(symbol)) { userData.setRechargeWithdrawalFee(Arith.mul(amount_fee, realtime.getClose())); userData.setWithdrawEth(amount); userData.setWithdrawAll(Arith.mul(amount, realtime.getClose())); } } saveUserData(userData); } @Override public void saveRechargeHandle(String partyId, double amount, String symbol) { User party = userService.getById(partyId); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(party.getRoleName())) { guest = true; } if (guest) { return; } UserData userData = new UserData(); userData.setRolename(party.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(partyId); if ("usdt".equals(symbol)) { userData.setRecharge(amount); userData.setRechargeUsdt(amount); } else { List realtime_list = this.dataService.realtime(symbol); Realtime realtime = null; if (realtime_list.size() > 0) { realtime = realtime_list.get(0); } else { log.info("symbol :{} 获取失败!",symbol); throw new YamiShopBindException("系统错误,请稍后重试"); } if ("btc".equals(symbol)) { userData.setRecharge(Arith.mul(amount, realtime.getClose())); userData.setRechargeBtc(amount); } if ("eth".equals(symbol)) { userData.setRecharge(Arith.mul(amount, realtime.getClose())); userData.setRechargeEth(amount); } if ("ht".equals(symbol)) { userData.setRecharge(Arith.mul(amount, realtime.getClose())); userData.setRechargeHt(amount); } if ("ltc".equals(symbol)) { userData.setRecharge(Arith.mul(amount, realtime.getClose())); userData.setRechargeLtc(amount); } if ("usdc".equals(symbol)) { userData.setRecharge(Arith.mul(amount, realtime.getClose())); userData.setRechargeUsdc(amount); } } saveUserData(userData); } @Override public void saveClose(ContractOrder order) { ApplicationUtil.getBean(ContractOrderService.class).wrapProfit(order); User user = userService.getById(order.getPartyId()); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName()) || Constants.SECURITY_ROLE_TEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId()); userData.setAmount(order.getDepositOpen().doubleValue()); if (order.getAmountClose() == null) { order.setAmountClose(BigDecimal.ZERO); } if (order.getAmountClose().compareTo(BigDecimal.ZERO) < 0) { order.setAmountClose(BigDecimal.ZERO); } userData.setFee(order.getFee().doubleValue()); // 直接用profit保证一直 userData.setOrderIncome(order.getProfit().doubleValue()); Item bySymbol = itemService.findBySymbol(order.getSymbol()); if(bySymbol != null){ userData.setItemType(bySymbol.getType()); } saveUserData(userData); } //基础反水 @Transactional public void saveBackwaterBasicTrading(String userId,double exchangeAmount,double fee) { log.info(userId+"========>"+exchangeAmount+"======"+fee); if (fee==0){ return; } Syspara syspara= sysparaService.find("backwater_basic_tradin"); if (syspara==null){ return; } boolean flag= Boolean.valueOf(syspara.getSvalue()); if (!flag){ return; } long sumExchangeAmount =sumExchangeAmount(userId); double commission=0; //对于月交易量超过500000美元的用户,返还15%。 if (sumExchangeAmount>500000){ commission=fee*0.15; } //对于月交易量超过1000000美元的用户,返还20% else if (sumExchangeAmount>1000000){ commission=fee*0.2; } else {//所有用户对每笔交易的手续费,返还10%作为返佣 commission=fee*0.1; } if (commission>0){ Wallet wallet =walletService.saveWalletByPartyId(userId); double amountBefore = wallet.getMoney().doubleValue(); walletService.update(wallet.getUserId(), commission); MoneyLog moneylog = new MoneyLog(); moneylog.setCategory(Constants.WALLET_USDT); moneylog.setAmountBefore(new BigDecimal(amountBefore)); moneylog.setAmount(new BigDecimal(commission)); moneylog.setAmountAfter(new BigDecimal(Arith.add(amountBefore, commission))); moneylog.setLog("基础交易反水usdt"+commission); moneylog.setUserId(userId); moneylog.setWalletType("usdt"); moneylog.setContentType(Constants.MONEYLOG_WAllET_EXCHANGE_COMMISSION); moneyLogService.save(moneylog); User user = userService.findByUserId(userId); UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(userId); saveUserData(userData); } } @Override public void saveSell(ExchangeApplyOrder order) { User user = userService.getById(order.getPartyId()); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName()) || Constants.SECURITY_ROLE_TEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } List realtime_list = this.dataService.realtime(order.getSymbol()); Realtime realtime = null; if (realtime_list.size() > 0) { realtime = realtime_list.get(0); } else { throw new YamiShopBindException("系统错误,请稍后重试"); } UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId()); userData.setExchangeAmount(Arith.mul(realtime.getClose(), order.getVolume())); userData.setExchangeFee(Arith.mul(realtime.getClose(), order.getFee())); userData.setExchangeIncome(0); saveUserData(userData); // ICE 问盘口 未回复 暂时不上 // saveBackwaterBasicTrading(order.getPartyId(), userData.getExchangeAmount(),userData.getExchangeFee()); } @Override public void saveBuy(ExchangeApplyOrder order) { User user = userService.getById(order.getPartyId()); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(user.getRoleName()) || Constants.SECURITY_ROLE_TEST.equals(user.getRoleName())) { guest = true; } if (guest) { return; } List realtime_list = this.dataService.realtime(order.getSymbol()); Realtime realtime = null; if (realtime_list.size() > 0) { realtime = realtime_list.get(0); } else { throw new YamiShopBindException("系统错误,请稍后重试"); } UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId()); userData.setExchangeAmount(order.getVolume()); userData.setExchangeFee(order.getFee()); saveUserData(userData); // saveBackwaterBasicTrading(order.getPartyId(), userData.getExchangeAmount(),userData.getExchangeFee()); } /** * 交割合约平仓 */ @Override public void saveFuturesClose(FuturesOrder order) { User user = userService.getById(order.getPartyId()); String roleName = user.getRoleName(); boolean guest = false; if (Constants.SECURITY_ROLE_GUEST.equals(roleName) || Constants.SECURITY_ROLE_TEST.equals(roleName)) { guest = true; } if (guest) { return; } User party = userService.getById(order.getPartyId()); UserData userData = new UserData(); userData.setRolename(party.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId()); userData.setFurturesAmount(order.getVolume()); userData.setFurturesFee(order.getFee()); userData.setFurturesIncome(order.getProfit()); saveUserData(userData); // UserRecom userRecom = this.userRecomService.findByPartyId(order.getPartyId()); // if (userRecom == null) { // return; // } // List parents = this.userRecomService.getParents(userRecom.getPartyId()); // // for (int i = 0; i < parents.size(); i++) { // Party party_parent = partyService.cachePartyBy(parents.get(i).getReco_id()); // // if (Constants.SECURITY_ROLE_AGENT.equals(party_parent.getRolename())) { // 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.setFurtures_amount(order.getVolume()); // userData_reco.setFurtures_fee(order.getFee()); // userData_reco.setFurtures_income(order.getProfit()); // save(userData_reco); // } } /** * 理财产品平仓 */ @Override public void saveSellFinance(FinanceOrder order) { User user = this.secUserService.findUserByUserCode(order.getFinanceId()); // 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; } User party = userService.cacheUserBy(order.getPartyId().toString()); UserData userData = new UserData(); userData.setRolename(party.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId().toString()); userData.setFinanceAmount(order.getAmount()); userData.setFinanceIncome(order.getProfit()); save(userData); // UserRecom userRecom = this.userRecomService.findByPartyId(order.getPartyId()); // if (userRecom == null) { // return; // } // List parents = this.userRecomService.getParents(userRecom.getPartyId()); // // for (int i = 0; i < parents.size(); i++) { // Party party_parent = partyService.cachePartyBy(parents.get(i).getReco_id()); // // if (Constants.SECURITY_ROLE_AGENT.equals(party_parent.getRolename())) { // 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.setFinance_amount(order.getAmount()); // userData_reco.setFinance_income(order.getProfit()); // save(userData_reco); // } // } } /** * 矿机买入 */ @Override public void saveMinerBuy(MinerOrder order) { User user = this.secUserService.cacheUserBy(order.getPartyId().toString()); // 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; } UserData userData = new UserData(); userData.setRolename(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId().toString()); userData.setMinerAmount(order.getAmount()); save(userData); } /** * 矿机赎回 */ @Override public void saveMinerClose(MinerOrder order) { User user = this.secUserService.cacheUserBy(order.getPartyId().toString()); // 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(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(order.getPartyId().toString()); userData.setMinerAmount(Arith.sub(0, order.getAmount())); save(userData); } /** * 矿机利息 * * @param partyId 获利人 * @param profit 利息 */ @Override public void saveMinerProfit(String partyId, double profit) { User user = this.secUserService.cacheUserBy(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(user.getRoleName()); userData.setCreateTime(new Date()); userData.setUserId(partyId); userData.setMinerIncome(profit); save(userData); } @Override public List withdrawLimit(Date startTime, Date endTime, List userIds) { return baseMapper.withdrawLimit(startTime, endTime, userIds); } @Override public long sumExchangeAmount(String userId) { return baseMapper.sumExchangeAmount(userId); } @Override public Map getPromoteData(String partyId, Map data, Date startTime, Date endTime) { ChildrenLever children = cacheChildrenLever4(partyId); // 获取子代partyId List level1 = new ArrayList(); List level2 = new ArrayList(); List level3 = new ArrayList(); level1 = children.getLever1(); level2 = children.getLever2(); level3 = children.getLever3(); Map peoples = new HashMap<>(); double rechangeAmount = 0; for (String value1 : level1) { Map 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.getUserId()), ""); } } else { rechangeAmount += userData.getRecharge(); peoples.put(String.valueOf(userData.getUserId()), ""); } } } } for (String value2 : level2) { Map 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.getUserId()), ""); } } else { rechangeAmount += userData.getRecharge(); peoples.put(String.valueOf(userData.getUserId()), ""); } } } } for (String value3 : level3) { Map 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.getUserId()), ""); } } else { rechangeAmount += userData.getRecharge(); peoples.put(String.valueOf(userData.getUserId()), ""); } } } } data.put("peopleNum", String.valueOf(peoples.size())); data.put("rechangeAmount", String.valueOf(rechangeAmount)); return data; } }