xiaoyong931011
2023-08-18 6c75b0c0fd6862b0d10793821db7017341a6a771
后台修改
21 files modified
2 files added
654 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/dto/PackageRecordDto.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappAKlineEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/AccountFlowEnum.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 53 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AKLineLimitVo.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/PackageRecordVo.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/system/controller/LoginController.java 29 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAKlineMapper.xml 13 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappMemberDao.xml 92 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappWalletCoinDao.xml 14 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-change-flow.html 89 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/index.html 184 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
@@ -6,9 +6,11 @@
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.DappAKlineEntity;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.MallAddressInfo;
import cc.mrbird.febs.dapp.entity.MallGoodsCategory;
import cc.mrbird.febs.dapp.mapper.DappAKlineMapper;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
@@ -135,6 +137,24 @@
        return dappMemberService.salePackage(salePackageDto);
    }
    @ApiOperation(value = "花吖排行榜", notes = "花吖排行榜")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = PackageRecordVo.class)
    })
    @PostMapping(value = "/packageRecord")
    public FebsResponse packageRecord(@RequestBody PackageRecordDto packageRecordDto) {
        return new FebsResponse().success().data(dappMemberService.packageRecord(packageRecordDto));
    }
    @ApiOperation(value = "涨势K线图", notes = "涨势K线图")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = AKLineLimitVo.class)
    })
    @PostMapping(value = "/packageKline")
    public FebsResponse packageKline() {
        return new FebsResponse().success().data(dappMemberService.packageKline());
    }
    @ApiOperation(value = "新增地址", notes = "新增地址")
    @PostMapping(value = "/createAddress")
    public FebsResponse createAddress(@RequestBody CreateAddressDto createAddressDto) {
src/main/java/cc/mrbird/febs/dapp/dto/PackageRecordDto.java
New file
@@ -0,0 +1,14 @@
package cc.mrbird.febs.dapp.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "PackageRecordDto", description = "排行榜")
public class PackageRecordDto {
    @ApiModelProperty(value = "1 -本日  2-本周 3-本月", example = "1")
    private Integer type;
}
src/main/java/cc/mrbird/febs/dapp/entity/DappAKlineEntity.java
@@ -15,7 +15,7 @@
@TableName("dapp_a_kline")
public class DappAKlineEntity extends BaseEntity {
    /**
     * 类型 1:小时 2:日 3:周 4:月
     * 类型 1:实时更新 2:前端显示
     */
    private Integer type;
src/main/java/cc/mrbird/febs/dapp/enumerate/AccountFlowEnum.java
@@ -9,6 +9,9 @@
public enum AccountFlowEnum {
    //每日获取金额(前端提示记录)
    SYSTEM_PACKAGE("SYSTEM_PACKAGE", 4),
    //每日获取金额(前端提示记录)
    AMOUNT_RECORD("AMOUNT_RECORD", 3),
    //支付订单
src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
@@ -7,6 +7,8 @@
 */
@Getter
public enum FundFlowEnum {
    //商城流水10%进入底池
    SYSTEM_ORDER_PACKAGE("SYSTEM_ORDER_PACKAGE", 43),
    //资产包增加
    PACKAGE_ADD("PACKAGE_ADD", 42),
    //系统回购
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -2,15 +2,18 @@
import cc.mrbird.febs.dapp.dto.MallGoodsQueryDto;
import cc.mrbird.febs.dapp.dto.MallOrderQueryDto;
import cc.mrbird.febs.dapp.dto.PackageRecordDto;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.MallAddressInfo;
import cc.mrbird.febs.dapp.vo.*;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@@ -113,4 +116,16 @@
    void deleteByOrderId(@Param("orderId")Long id);
    MallAddressInfo selectAddressOneByMemberId(@Param("memberId")Long memberId);
    BigDecimal selectOrderAmountByTime(@Param("type") String type, @Param("date") Date date);
    Integer selectOrderCountByTime(@Param("type") String type, @Param("date") Date date);
    BigDecimal selectAccountChangeAfterAmountByTime(@Param("type") String type, @Param("date") Date date);
    List<PackageRecordVo> selectPackageRecordDayInPage(@Param("date") Date date);
    List<PackageRecordVo> selectPackageRecordMonthInPage(@Param("date") Date date);
    List<PackageRecordVo> selectPackageRecordWeekInPage(@Param("date") Date date);
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletCoinDao.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public interface DappWalletCoinDao extends BaseMapper<DappWalletCoinEntity> {
@@ -44,4 +45,8 @@
    void reduceTotalAndAvailableByMemberId(@Param("memberId")Long id, @Param("balance")BigDecimal multiply);
    List<DappWalletCoinEntity> selectAmountThanZero();
    BigDecimal selectTotal();
    BigDecimal selectWithdrawAmountByType(@Param("type") String type, @Param("date") Date date);
}
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -110,4 +110,8 @@
    void confirmOrder(Long id);
    MallAddressInfo findAddress();
    List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto);
    List<AKLineLimitVo> packageKline();
}
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -7,16 +7,11 @@
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
import cc.mrbird.febs.dapp.entity.DappWalletMineEntity;
import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
import cc.mrbird.febs.dapp.vo.DappFundFlowVo;
import cc.mrbird.febs.dapp.vo.MallOrderListVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public interface DappWalletService {
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -18,6 +18,7 @@
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -1298,6 +1299,32 @@
        return mallAddressInfo;
    }
    @Override
    public List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto) {
        List<PackageRecordVo> packageRecordVos = new ArrayList<>();
        Integer type = packageRecordDto.getType();
        if(2 == type){
            packageRecordVos = dappMemberDao.selectPackageRecordWeekInPage(DateUtil.beginOfWeek(DateUtil.date()));
        }else if(3 == type){
            packageRecordVos = dappMemberDao.selectPackageRecordMonthInPage(DateUtil.date());
        }else{
            packageRecordVos = dappMemberDao.selectPackageRecordDayInPage(DateUtil.date());
        }
        if(CollUtil.isNotEmpty(packageRecordVos)){
            Integer packageNum = 0;
            for(PackageRecordVo packageRecordVo : packageRecordVos){
                packageNum = packageNum + 1;
                packageRecordVo.setPackageNum(packageNum);
            }
        }
        return packageRecordVos;
    }
    @Override
    public List<AKLineLimitVo> packageKline() {
        return dappAKlineMapper.selectListByTypeAndLimit(2, 30);
    }
    public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
        List<List<String>> partitionedList = new ArrayList<>();
        int size = originalList.size();
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -2516,6 +2516,22 @@
            BigDecimal divide = avaPackagePoor.divide(packageTotalScore, 8, BigDecimal.ROUND_DOWN);
            packageScorePriceDic.setValue(divide.toString());
            dataDictionaryCustomMapper.updateById(packageScorePriceDic);
            DappFundFlowEntity packageFlow = new DappFundFlowEntity(
                    AccountFlowEnum.SYSTEM_PACKAGE.getCode(),
                    1L,
                    addPoor,
                    FundFlowEnum.SYSTEM_ORDER_PACKAGE.getCode(),
                    2,
                    BigDecimal.ZERO,
                    null,
                    orderId);
            dappFundFlowDao.insert(packageFlow);
            DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
            dappAKlineEntity.setOpenPrice(divide);
            dappAKlineEntity.setType(1);
            dappAKlineMapper.insert(dappAKlineEntity);
        }
    }
@@ -3060,15 +3076,22 @@
            dappWalletCoinEntity.setAvailableAmount(availableAmountRelease);
            dappWalletCoinDao.updateById(dappWalletCoinEntity);
            StringBuffer content = new StringBuffer();
            if(amountMagic.compareTo(localTotalAchieve) > 0){
                content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
                        "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" +
                        "限,增加消费金额可获得更多收益");
            }else{
                content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
                        "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN));
            }
            DappAccountMoneyChangeEntity record = new DappAccountMoneyChangeEntity(
                    memberId,
                    totalAmount,
                    amountMagic,
                    localTotalAchieve,
                    AccountFlowEnum.AMOUNT_RECORD.getCode(),
                    "今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
                            "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" +
                            "限,增加消费金额可获得更多收益");
                    content.toString());
            dappAccountMoneyChangeDao.insert(record);
            //实时更新用户等级
@@ -3161,6 +3184,12 @@
        BigDecimal packageAvaCntScore = packageAvaCnt.add(cnt);
        packageAvaCntDic.setValue(packageAvaCntScore.toString());
        dataDictionaryCustomMapper.updateById(packageAvaCntDic);
        DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
        dappAKlineEntity.setOpenPrice(divide);
        dappAKlineEntity.setType(1);
        dappAKlineMapper.insert(dappAKlineEntity);
    }
    @Override
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -1,44 +1,27 @@
package cc.mrbird.febs.dapp.service.impl;
import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.chain.ContractChainService;
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.*;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.BoxUtil;
import cc.mrbird.febs.dapp.vo.*;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import freemarker.template.utility.StringUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
@@ -57,17 +40,10 @@
    private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
    private final RedisUtils redisUtils;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final DappNftActivationDao dappNftActivationDao;
    private final MemberCoinWithdrawDao memberCoinWithdrawDao;
    private final ChainProducer chainProducer;
    private final DappSystemDao dappSystemDao;
    private final DappSystemProfitDao dappSystemProfitDao;
    private final DappNodeOrderMapper dappNodeOrderMapper;
    private final DappMemberNodeMapper dappMemberNodeMapper;
    private final DappChargeUsdtMapper dappChargeUsdtMapper;
    private final DappUsdtPerkEntityMapper dappUsdtPerkEntityMapper;
    private final DappAKlineMapper dappAKlineMapper;
    @Override
    public List<DappFundFlowEntity> recordInPage(RecordInPageDto recordInPageDto) {
@@ -145,21 +121,24 @@
        BigDecimal feeAmount = amount.multiply(withdrawFee);
        //减少余额
        this.updateWalletCoinWithLock(amount, member.getId(), 2);
        BigDecimal withdrawAmount = amount.divide(new BigDecimal(7),2,BigDecimal.ROUND_DOWN);
        BigDecimal withdrawAmountFee = feeAmount.divide(new BigDecimal(7),2,BigDecimal.ROUND_DOWN);
        //增加流水
        DappFundFlowEntity dappFundFlowEntity = new DappFundFlowEntity(
                AccountFlowEnum.AMOUNT.getCode(),
                member.getId(),
                amount.negate(),
                withdrawAmount.negate(),
                FundFlowEnum.WITHDRAW_USDT.getCode(),
                DappFundFlowEntity.WITHDRAW_STATUS_ING,
                feeAmount);
                withdrawAmountFee);
        dappFundFlowDao.insert(dappFundFlowEntity);
        //增加提现的记录
        MemberCoinWithdrawEntity memberCoinWithdraw = new MemberCoinWithdrawEntity();
        memberCoinWithdraw.setMemberId(member.getId());
        memberCoinWithdraw.setAddress(member.getAddress());
        memberCoinWithdraw.setAmount(amount.subtract(feeAmount));
        memberCoinWithdraw.setFeeAmount(feeAmount);
        memberCoinWithdraw.setAmount(withdrawAmount.subtract(withdrawAmountFee));
        memberCoinWithdraw.setFeeAmount(withdrawAmountFee);
        memberCoinWithdraw.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
        memberCoinWithdraw.setSymbol("USDT");
        memberCoinWithdraw.setFlowId(dappFundFlowEntity.getId());
@@ -471,7 +450,7 @@
            //生成一条进行中的入金资金流水记录
            DappFundFlowEntity fundFlow = new DappFundFlowEntity(
                    dappMemberEntity.getId(),
                    transferAusdDto.getAmount(),
                    transferAusdDto.getAmount().multiply(new BigDecimal(7)),
                    type,
                    1,
                    transferAusdDto.getFee(),
@@ -496,7 +475,7 @@
            /**
             * 增加用户的余额
             */
            dappWalletCoinDao.addTotalAndaddAvailableByMemberId(member.getId(),amount);
            dappWalletCoinDao.addTotalAndaddAvailableByMemberId(member.getId(),amount.multiply(new BigDecimal(7)));
            DappChargeUsdtEntity dappChargeUsdtEntity = new DappChargeUsdtEntity();
            dappChargeUsdtEntity.setMemberId(member.getId());
@@ -504,7 +483,7 @@
            dappChargeUsdtEntity.setMemberHash(transferAusdDto.getTxHash());
            dappChargeUsdtEntity.setStatus(2);
            dappChargeUsdtEntity.setTotalCnt(amount);
            dappChargeUsdtEntity.setRealCnt(amount);
            dappChargeUsdtEntity.setRealCnt(amount.multiply(new BigDecimal(7)));
            dappChargeUsdtMapper.insert(dappChargeUsdtEntity);
        } else {
            if (flow.getStatus() == 1) {
@@ -723,7 +702,7 @@
         */
        BigDecimal withdrawFee = dappFundFlowEntity.getFee();
        if(BigDecimal.ZERO.compareTo(withdrawFee) < 0){
            BigDecimal addPoor = withdrawFee;
            BigDecimal addPoor = withdrawFee.multiply(new BigDecimal(7));
            DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
@@ -747,6 +726,11 @@
            BigDecimal divide = avaPackagePoor.divide(packageTotalScore, 8, BigDecimal.ROUND_DOWN);
            packageScorePriceDic.setValue(divide.toString());
            dataDictionaryCustomMapper.updateById(packageScorePriceDic);
            DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
            dappAKlineEntity.setOpenPrice(divide);
            dappAKlineEntity.setType(1);
            dappAKlineMapper.insert(dappAKlineEntity);
        }
        return new FebsResponse().success();
    }
@@ -779,7 +763,8 @@
        memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
        memberCoinWithdrawDao.updateById(memberCoinWithdrawEntity);
        //增加余额
        this.updateWalletCoinWithLock(dappFundFlowEntity.getAmount().negate(), dappMemberEntity.getId(), 1);
        BigDecimal negate = dappFundFlowEntity.getAmount().negate().multiply(new BigDecimal(7));
        this.updateWalletCoinWithLock(negate, dappMemberEntity.getId(), 1);
        return new FebsResponse().success();
    }
src/main/java/cc/mrbird/febs/dapp/vo/AKLineLimitVo.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -11,14 +12,10 @@
@ApiModel(value = "AKLineLimitVo", description = "K线数据")
public class AKLineLimitVo {
    @ApiModelProperty(value = "价格")
    private BigDecimal openPrice;
    private BigDecimal closePrice;
    private BigDecimal lowestPrice;
    private BigDecimal highestPrice;
    @ApiModelProperty(value = "时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
src/main/java/cc/mrbird/febs/dapp/vo/PackageRecordVo.java
New file
@@ -0,0 +1,17 @@
package cc.mrbird.febs.dapp.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "PackageRecordVo", description = "排行榜")
public class PackageRecordVo {
    @ApiModelProperty(value = "排名")
    private Integer packageNum;
    @ApiModelProperty(value = "地址")
    private String address;
}
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
@@ -1,8 +1,11 @@
package cc.mrbird.febs.job;
import cc.mrbird.febs.dapp.entity.DappAKlineEntity;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.mapper.DappAKlineMapper;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -20,6 +23,8 @@
    @Autowired
    private DappSystemService dappSystemService;
    @Autowired
    private DappAKlineMapper dappAKlineMapper;
    @Scheduled(cron = "0 0 0 * * ?")
    public void memberPerk() {
@@ -52,4 +57,17 @@
        }
    }
    @Scheduled(cron = "0 0 0/4 * * ? ")
    public void klineUpdate() {
        DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
        dappAKlineEntity.setType(2);
        DappAKlineEntity dappAKlineOld = dappAKlineMapper.selectOneHourByType();
        if(ObjectUtil.isEmpty(dappAKlineOld)){
            dappAKlineEntity.setOpenPrice(BigDecimal.ZERO);
        }else{
            dappAKlineEntity.setOpenPrice(dappAKlineOld.getOpenPrice());
        }
        dappAKlineMapper.insert(dappAKlineEntity);
    }
}
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -1,6 +1,5 @@
package cc.mrbird.febs.rabbit;
import lombok.Data;
import lombok.Getter;
@Getter
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -2,10 +2,7 @@
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.rabbit.QueueConstants;
import cn.hutool.core.date.DateUtil;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
src/main/java/cc/mrbird/febs/system/controller/LoginController.java
@@ -6,10 +6,14 @@
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.service.ValidateCodeService;
import cc.mrbird.febs.common.utils.Md5Util;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao;
import cc.mrbird.febs.dapp.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.monitor.entity.LoginLog;
import cc.mrbird.febs.monitor.service.ILoginLogService;
import cc.mrbird.febs.system.entity.User;
import cc.mrbird.febs.system.service.IUserService;
import cn.hutool.core.date.DateUtil;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.validation.annotation.Validated;
@@ -23,6 +27,8 @@
import javax.servlet.http.HttpSession;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,6 +44,8 @@
    private final IUserService userService;
    private final ValidateCodeService validateCodeService;
    private final ILoginLogService loginLogService;
    private final DappMemberDao dappMemberDao;
    private final DappWalletCoinDao dappWalletCoinDao;
    @PostMapping("login")
    @Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit")
@@ -91,6 +99,27 @@
        param.setUsername(username);
        List<Map<String, Object>> lastSevenUserVisitCount = this.loginLogService.findLastSevenDaysVisitCount(param);
        data.put("lastSevenUserVisitCount", lastSevenUserVisitCount);
        data.put("orderAmountTotal", dappMemberDao.selectOrderAmountByTime(null, null));
        data.put("orderAmountMonth", dappMemberDao.selectOrderAmountByTime("M", new Date()));
        data.put("orderAmountToday", dappMemberDao.selectOrderAmountByTime("D", new Date()));
        data.put("orderTotalCnt", dappMemberDao.selectOrderCountByTime(null, null));
        data.put("orderMonthCnt", dappMemberDao.selectOrderCountByTime("M", new Date()));
        data.put("orderTodayCnt", dappMemberDao.selectOrderCountByTime("D", new Date()));
        BigDecimal releaseTotal = dappMemberDao.selectAccountChangeAfterAmountByTime(null, null);
        BigDecimal releaseTotalPre = dappMemberDao.selectAccountChangeAfterAmountByTime(null, null);
        BigDecimal releaseNot = releaseTotalPre.subtract(releaseTotal);
        data.put("releaseTotal", releaseTotal);
        data.put("releaseNot", releaseNot);
        data.put("releaseToday", dappMemberDao.selectAccountChangeAfterAmountByTime("D", new Date()));
        data.put("withdrawTotal",  dappWalletCoinDao.selectWithdrawAmountByType(null, null));
        data.put("withdrawToday", dappWalletCoinDao.selectWithdrawAmountByType("D", new Date()));
        data.put("withdrawNot", dappWalletCoinDao.selectTotal());
        return new FebsResponse().success().data(data);
    }
src/main/resources/mapper/dapp/DappAKlineMapper.xml
@@ -31,21 +31,10 @@
    <select id="selectListByTypeAndLimit" resultType="cc.mrbird.febs.dapp.vo.AKLineLimitVo">
        select
            a.open_price openPrice,
            a.close_price closePrice,
            a.lowest_price lowestPrice,
            a.highest_price highestPrice,
            a.create_time createTime
        from dapp_a_kline a
        where a.type = #{type}
<!--        <where>-->
<!--            <if test="type != 1">-->
<!--                and a.type = #{type}-->
<!--            </if>-->
<!--            <if test="type == 1">-->
<!--                and a.type in (0,1)-->
<!--            </if>-->
<!--        </where>-->
        order by a.create_time desc
        order by a.create_time asc
        limit #{kLineLimit}
    </select>
src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -398,4 +398,96 @@
        order by a.is_your asc
        limit 1
    </select>
    <select id="selectOrderAmountByTime" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0)
        from mall_order_info
        where
        status = 2
        <if test='type == "D"'>
            and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
        </if>
        <if test='type == "M"'>
            and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m');
        </if>
    </select>
    <select id="selectOrderCountByTime" resultType="java.lang.Integer">
        select count(id)
        from mall_order_info
        where
        status = 2
        <if test='type == "D"'>
            and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
        </if>
        <if test='type == "M"'>
            and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m');
        </if>
    </select>
    <select id="selectAccountChangeAfterAmountByTime" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(after_amount,0)),0)
        from dapp_account_money_change
        where type = 3
        <if test='type == "D"'>
            and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
        </if>
        <if test='type == "M"'>
            and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m');
        </if>
    </select>
    <select id="selectPackageRecordDayInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo">
        SELECT
            b.address address,
            IFNULL(SUM(a.amount), 0) totalAmount
        FROM
            dapp_fund_flow a
                LEFT JOIN dapp_member b on a.member_id = b.id
        WHERE
            a.type = 22
          and date_format(a.CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
          and b.address is not NULL
          and b.address != 'SYSTEM'
        GROUP BY
            a.member_id
        order by totalAmount desc
            LIMIT 100;
    </select>
    <select id="selectPackageRecordMonthInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo">
        SELECT
            b.address address,
            IFNULL(SUM(a.amount), 0) totalAmount
        FROM
            dapp_fund_flow a
                LEFT JOIN dapp_member b on a.member_id = b.id
        WHERE
            a.type = 22
          and date_format(a.CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m')
          and b.address is not NULL
          and b.address != 'SYSTEM'
        GROUP BY
            a.member_id
        order by totalAmount desc
            LIMIT 100;
    </select>
    <select id="selectPackageRecordWeekInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo">
        SELECT
            b.address address,
            IFNULL(SUM(a.amount), 0) totalAmount
        FROM
            dapp_fund_flow a
                LEFT JOIN dapp_member b on a.member_id = b.id
        WHERE
            a.type = 22
          and date_format(a.CREATE_TIME, '%Y-%m-%d') > date_format(#{date}, '%Y-%m-%d')
          and b.address is not NULL
          and b.address != 'SYSTEM'
        GROUP BY
            a.member_id
        order by totalAmount desc
            LIMIT 100;
    </select>
</mapper>
src/main/resources/mapper/dapp/DappWalletCoinDao.xml
@@ -153,4 +153,18 @@
    <select id="selectAmountThanZero" resultType="cc.mrbird.febs.dapp.entity.DappWalletCoinEntity">
        select * from dapp_wallet_coin where available_amount > 0
    </select>
    <select id="selectTotal" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(total_amount,0)),0)
        from dapp_wallet_coin
    </select>
    <select id="selectWithdrawAmountByType" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0)
        from member_coin_withdraw
        where 1=1
        <if test='type == "D"'>
            and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
        </if>
    </select>
</mapper>
src/main/resources/templates/febs/views/dapp/money-change-flow.html
@@ -21,44 +21,55 @@
<!--                                            <input type="text" placeholder="输入转账HASH" name="fromHash" autocomplete="off" class="layui-input">-->
<!--                                        </div>-->
<!--                                    </div>-->
<!--                                    <div class="layui-inline">-->
<!--                                        <label class="layui-form-label">类型:</label>-->
<!--                                        <div class="layui-input-inline">-->
<!--                                            <select name="type">-->
<!--                                                <option value=""></option>-->
<!--                                                <option value="4">入金,买入A币</option>-->
<!--                                                <option value="5">进入a底池</option>-->
<!--                                                <option value="6">进入b底池</option>-->
<!--                                                <option value="7">50%客户秒到</option>-->
<!--                                                <option value="8">全网加权分红收益总量</option>-->
<!--                                                <option value="9">10%直推</option>-->
<!--                                                <option value="10">5%节点-(超级节点收益总量)</option>-->
<!--                                                <option value="11">5%节点平分</option>-->
<!--                                                <option value="12">5%基金会-(基金会收益总量)</option>-->
<!--                                                <option value="13">10%级差奖-(业绩奖收益总量)</option>-->
<!--                                                <option value="14">10%级差奖给会员</option>-->
<!--                                                <option value="15">dao3的全网分红</option>-->
<!--                                                <option value="16">dao4的全网分红</option>-->
<!--                                                <option value="17">dao5的全网分红</option>-->
<!--                                                <option value="18">dao5的平级全网分红</option>-->
<!--                                                <option value="19">DAO 3节点收益</option>-->
<!--                                                <option value="20">DAO 4节点收益</option>-->
<!--                                                <option value="21">DAO 5节点收益</option>-->
<!--                                                <option value="22">DAO 5平级收益</option>-->
<!--                                                <option value="23">资产钱包转账到闪对钱包</option>-->
<!--                                                <option value="24">资产钱包转账到闪对钱包手续费</option>-->
<!--                                                <option value="25">闪对钱包转USDT</option>-->
<!--                                                <option value="27">闪对钱包转USDT(USDT流水)</option>-->
<!--                                                <option value="28">入金,买入AUSD币</option>-->
<!--                                                <option value="29">每小时燃烧</option>-->
<!--                                                <option value="30">20%全网加权分红剩余</option>-->
<!--                                                <option value="31">AUSDT互转</option>-->
<!--                                                <option value="32">ANDAO互转</option>-->
<!--                                                <option value="33">权益额度增加</option>-->
<!--                                                <option value="34">进入提现池</option>-->
<!--                                            </select>-->
<!--                                        </div>-->
<!--                                    </div>-->
                                    <div class="layui-inline">
                                        <label class="layui-form-label">类型:</label>
                                        <div class="layui-input-inline">
                                            <select name="type">
                                                <option value=""></option>
                                                <option value="1">赠送积分</option>
                                                <option value="2">支付订单</option>
                                                <option value="3">静态补贴</option>
                                                <option value="4">预期减少赠送积分</option>
                                                <option value="5">预期增加余额</option>
                                                <option value="6">直推</option>
                                                <option value="7">团队静态收益V1</option>
                                                <option value="8">团队静态收益V2</option>
                                                <option value="9">团队静态收益V3</option>
                                                <option value="10">团队静态收益V4</option>
                                                <option value="11">团队静态收益V5</option>
                                                <option value="12">团队静态收益V6</option>
                                                <option value="13">团队静态收益V7</option>
                                                <option value="14">共享加速V1</option>
                                                <option value="15">共享加速V2</option>
                                                <option value="16">共享加速V3</option>
                                                <option value="17">共享加速V4</option>
                                                <option value="18">共享加速V5</option>
                                                <option value="19">共享加速V6</option>
                                                <option value="20">共享加速V7</option>
                                                <option value="21">实际减少赠送积分</option>
                                                <option value="22">实际增加余额</option>
                                                <option value="23">卖出资产</option>
                                                <option value="24">卖出资产获得余额</option>
                                                <option value="25">卖出资产手续费</option>
                                                <option value="26">每日获取金额(前端提示记录)</option>
                                                <option value="27">系统拨付余额</option>
                                                <option value="28">系统拨付赠送积分</option>
                                                <option value="29">系统拨付资产包</option>
                                                <option value="30">新增业绩</option>
                                                <option value="31">全网分红V1</option>
                                                <option value="32">全网分红V2</option>
                                                <option value="33">全网分红V3</option>
                                                <option value="34">全网分红V4</option>
                                                <option value="35">全网分红V5</option>
                                                <option value="36">全网分红V6</option>
                                                <option value="37">全网分红V7</option>
                                                <option value="39">充值</option>
                                                <option value="40">提现</option>
                                                <option value="41">系统回购</option>
                                                <option value="42">获得通证</option>
                                            </select>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
@@ -197,7 +208,7 @@
            return {
                address: $searchForm.find('input[name="address"]').val().trim(),
                // fromHash: $searchForm.find('input[name="fromHash"]').val().trim(),
                // type: $searchForm.find("select[name='type']").val()
                type: $searchForm.find("select[name='type']").val()
            };
        }
src/main/resources/templates/febs/views/index.html
@@ -3,6 +3,7 @@
        border: 1px solid #f1f1f1;
        margin-bottom: .5rem;
        padding: .5rem;
        background: #FFFFFF;
    }
    #febs-index .welcome-info-wrapper {
@@ -68,11 +69,45 @@
    #febs-index .project-desc {
        color: rgba(0, 0, 0, 0.45);
    }
    /*.layui-card:last-child{*/
    /*    background: #F8F8F8;*/
    /*}*/
    .box{
        background: #FFFFFF;
        padding: 30px 30px;
        border-radius: 4px;
    }
    .box .name{
        font-size: 14px;
        color: #333333;
    }
    .box .num{
        font-size: 24px;
        color: #1890ff;
        font-weight: bold;
        margin-top: 10px;
    }
    .m-title{
        position: relative;
        font-size: 16px;
        font-weight: bold;
        color: #000000;
        padding-left: 20px;
        margin: 0 0 10px;
    }
    .m-title::before{
        content: '';
        position: absolute;
        left: 0;
        width: 4px;
        height: 20px;
        background: #1890ff;
    }
</style>
<div class="layui-fluid layui-anim febs-anim-up" id="febs-index" lay-title="系统首页">
    <div class="layui-row layui-col-space8 febs-container">
        <div class="layui-col-md12 layui-col-sm12 layui-col-xs12">
            <div class="layui-card">
            <div class="layui-card" style="background: #F8F8F8;">
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row welcome-info">
                        <div class="layui-col-md6 layui-col-sm12 layui-col-xs12">
@@ -86,6 +121,7 @@
                                            <span id="welcome-message"></span>
                                        </div>
                                        <div class="user-dept">
                                            <span id="user-dept"></span> | <span id="user-role"></span>
                                        </div>
                                        <div class="user-login-info">
                                            上次登录时间:<span id="last-login-time">2019-05-23 18:45:12</span>
@@ -96,6 +132,135 @@
                        </div>
                    </div>
                </div>
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row">
                        <div class="m-title">商城订单流水</div>
                        <div class="layui-row layui-col-space15">
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">总流水</p>
                                        <p class="num"><span id="orderAmountTotal"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">本月销量流水</p>
                                        <p class="num"><span id="orderAmountMonth"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">今日销量流水</p>
                                        <p class="num"><span id="orderAmountToday"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row">
                        <div class="m-title">商城订单数量</div>
                        <div class="layui-row layui-col-space15">
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">订单总量</p>
                                        <p class="num"><span id="orderTotalCnt"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">本月订单量</p>
                                        <p class="num"><span id="orderMonthCnt"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">今日订单量</p>
                                        <p class="num"><span id="orderTodayCnt"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row">
                        <div class="m-title">商城释放</div>
                        <div class="layui-row layui-col-space15">
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">总释放数量</p>
                                        <p class="num"><span id="releaseTotal"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">未释放数量</p>
                                        <p class="num"><span id="releaseNot"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">今日释放数量</p>
                                        <p class="num"><span id="releaseToday"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row">
                        <div class="m-title">商城提现</div>
                        <div class="layui-row layui-col-space15">
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">总提现数量</p>
                                        <p class="num"><span id="withdrawTotal"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">未提现数量</p>
                                        <p class="num"><span id="withdrawNot"></span></p>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md3">
                                <div class="layui-panel">
                                    <div class="box">
                                        <p class="name">今日提现数量</p>
                                        <p class="num"><span id="withdrawToday"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
@@ -128,6 +293,23 @@
            var index = Math.floor((Math.random() * welcomeArr.length));
            var welcomeMessage = time + ',<a id="febs-index-user">' + currentUser.username + '</a>,' + welcomeArr[index];
            $view.find('#today-ip').text(data.todayIp).end()
                .find('#orderAmountTotal').text(data.orderAmountTotal).end()
                .find('#orderAmountMonth').text(data.orderAmountTotal).end()
                .find('#orderAmountToday').text(data.orderAmountToday).end()
                .find('#orderTotalCnt').text(data.orderTotalCnt).end()
                .find('#orderMonthCnt').text(data.orderTotalCnt).end()
                .find('#orderTodayCnt').text(data.orderTodayCnt).end()
                .find('#releaseTotal').text(data.releaseTotal).end()
                .find('#releaseToday').text(data.releaseToday).end()
                .find('#releaseNot').text(data.releaseNot).end()
                .find('#withdrawTotal').text(data.withdrawTotal).end()
                .find('#withdrawToday').text(data.withdrawToday).end()
                .find('#withdrawNot').text(data.withdrawNot).end()
                .find('#today-visit-count').text(data.todayVisitCount).end()
                .find('#total-visit-count').text(data.totalVisitCount).end()
                .find('#user-dept').text(currentUser.deptName ? currentUser.deptName : '暂无所属部门').end()