xiaoyong931011
2022-11-14 6ac0aeeea8834ad234623a321a64504a998c05d7
20221114,按日期查看资产
20 files modified
6 files added
832 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.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 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 28 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java 24 ●●●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml 34 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappMemberDao.xml 28 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/MemberCoinChargeDao.xml 20 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml 21 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-total-flow-out.html 62 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-total-flow.html 42 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-total.html 121 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ChainTest.java 16 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/JunitTest.java 274 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -12,6 +12,8 @@
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.vo.AdminMemberIdentityVo;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
@@ -240,4 +242,38 @@
        Map<String, Object> data = getDataTable(dappMemberService.getMessageListInPage(dappMessageEntity, request));
        return new FebsResponse().success().data(data);
    }
    /**
     * 每日资产总览-充值列表
     */
    @GetMapping("getFlowListByDay")
    public FebsResponse getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request, Integer parentId) {
        if (parentId == null) {
            ViewController.createTimeStr = "";
        }
        User currentUser = FebsUtil.getCurrentUser();
        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
            memberCoinChargeEntity.setDescription(currentUser.getDescription());
        }
        memberCoinChargeEntity.setCreateTimeStr(ViewController.createTimeStr);
        Map<String, Object> data = getDataTable(dappMemberService.getFlowListByDay(memberCoinChargeEntity,request));
        return new FebsResponse().success().data(data);
    }
    /**
     * 每日资产总览-提现列表
     */
    @GetMapping("getOutFlowListByDay")
    public FebsResponse getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request, Integer parentId) {
        if (parentId == null) {
            ViewController.createTimeStr = "";
        }
        User currentUser = FebsUtil.getCurrentUser();
        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
            memberCoinWithdrawEntity.setDescription(currentUser.getDescription());
        }
        memberCoinWithdrawEntity.setCreateTimeStr(ViewController.createTimeStr);
        Map<String, Object> data = getDataTable(dappMemberService.getOutFlowListByDay(memberCoinWithdrawEntity,request));
        return new FebsResponse().success().data(data);
    }
}
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
@@ -59,4 +59,13 @@
        }
        return new FebsResponse().success().data(getDataTable(dappWalletService.accountMoneyChangeInPage(record, request)));
    }
    @RequestMapping(value = "moneyTotal")
    public FebsResponse moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request) {
        User currentUser = FebsUtil.getCurrentUser();
        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
            record.setDescription(currentUser.getDescription());
        }
        return new FebsResponse().success().data(getDataTable(dappWalletService.moneyTotal(record, request)));
    }
}
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.entity.AppVersion;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.service.DappMemberService;
import lombok.RequiredArgsConstructor;
@@ -227,4 +228,41 @@
        return FebsUtil.view("dapp/message-list");
    }
    /**
     * 每日资产总览-列表
     * @return
     */
    @GetMapping("moneyTotal")
    @RequiresPermissions("moneyTotal:view")
    public String moneyTotal() {
        return FebsUtil.view("dapp/money-total");
    }
    /**
     * 每日资产总览-充值详情
     * @param createTime
     * @param model
     * @return
     */
    public static String createTimeStr;
    @GetMapping("/amountFlow/{createTime}")
    @RequiresPermissions("amountFlow:update")
    public String amountFlow(@PathVariable String createTime, Model model) {
        createTimeStr = createTime;
        return FebsUtil.view("dapp/money-total-flow");
    }
    /**
     * 每日资产总览-提现详情
     * @param createTime
     * @param model
     * @return
     */
    @GetMapping("/amountOutFlow/{createTime}")
    @RequiresPermissions("amountOutFlow:update")
    public String amountOutFlow(@PathVariable String createTime, Model model) {
        createTimeStr = createTime;
        return FebsUtil.view("dapp/money-total-flow-out");
    }
}
src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java
@@ -40,4 +40,10 @@
     */
    @TableField(exist = false)
    private String username;
    @TableField(exist = false)
    private String createTimeStr;
    @TableField(exist = false)
    private String description;
}
src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java
@@ -63,6 +63,9 @@
    @TableField(exist = false)
    private String username;
    @TableField(exist = false)
    private String createTimeStr;
    
    
src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.dapp.dto.ApiAmountChangeDto;
import cc.mrbird.febs.dapp.entity.DappAccountMoneyChangeEntity;
import cc.mrbird.febs.dapp.vo.AdminMoneyTotalVo;
import cc.mrbird.febs.dapp.vo.ApiAmountChangeListVo;
import cc.mrbird.febs.dapp.vo.ApiMyTeammateAmountChangeListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -16,4 +17,6 @@
    IPage<ApiAmountChangeListVo> selectChangeListInPage(Page<ApiAmountChangeListVo> page, @Param("record") DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity);
    IPage<ApiMyTeammateAmountChangeListVo> selectTeammateChangeListInPage(@Param("record")ApiAmountChangeDto apiAmountChangeDto, Page<ApiMyTeammateAmountChangeListVo> page);
    IPage<AdminMoneyTotalVo> selectMoneyTotalInPage(@Param("record")DappAccountMoneyChangeEntity record, Page<DappAccountMoneyChangeEntity> page);
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -3,10 +3,8 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.dto.ApiMyTeammateInfoDto;
import cc.mrbird.febs.dapp.dto.TeamListDto;
import cc.mrbird.febs.dapp.entity.AppVersion;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappMessageEntity;
import cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
import cc.mrbird.febs.dapp.vo.ApiMyTeammateInfoListVo;
import cc.mrbird.febs.dapp.vo.TeamListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -76,4 +74,8 @@
    List<DappMemberEntity> selectTotalMemberByRefererIdAndIdentity(@Param("inviteId")String inviteId);
    IPage<DappMessageEntity> selectMessageListInPage(@Param("record")DappMessageEntity dappMessageEntity, Page<DappMemberEntity> page);
    IPage<MemberCoinChargeEntity> getChargeListByDayInPage(Page<MemberCoinChargeEntity> page, @Param("record")MemberCoinChargeEntity memberCoinChargeEntity);
    IPage<AdminMemberCoinWithdrawVo> getWithDrawListByDayInPage(Page<AdminMemberCoinWithdrawVo> page,  @Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
}
src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java
@@ -1,11 +1,13 @@
package cc.mrbird.febs.dapp.mapper;
import cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity;
import cc.mrbird.febs.dapp.vo.AdminMemberChargeVo;
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.util.Date;
import java.util.List;
public interface MemberCoinChargeDao extends BaseMapper<MemberCoinChargeEntity> {
@@ -17,4 +19,5 @@
    public IPage<MemberCoinChargeEntity> findMemberCoinChargeInPage(Page<MemberCoinChargeEntity> page,
            @Param("record")MemberCoinChargeEntity memberCoinChargeEntity);
    AdminMemberChargeVo selectTotalAmountByCreateTimeAndInviteId(@Param("createTime") Date createTime, @Param("description") String description);
}
src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java
@@ -2,14 +2,19 @@
import cc.mrbird.febs.dapp.entity.MemberCoinWithdrawEntity;
import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
import cc.mrbird.febs.dapp.vo.AdminMemberWithdrawVo;
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.util.Date;
public interface MemberCoinWithdrawDao extends BaseMapper<MemberCoinWithdrawEntity> {
    IPage<AdminMemberCoinWithdrawVo> findMemberWithdrawCoinInPage(Page<MemberCoinWithdrawEntity> page, @Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
    Integer selectByMemberIdAndCreateTime(@Param("memberId")Long memberIdOut, @Param("createTime")String createTime, @Param("type")String type);
    AdminMemberWithdrawVo selectTotalAmountByCreateTimeAndInviteId(@Param("createTime") Date createTime, @Param("description") String description);
}
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -108,4 +108,8 @@
    FebsResponse addMessage(AddMessageDto addMessageDto);
    IPage<DappMessageEntity> getMessageListInPage(DappMessageEntity dappMessageEntity, QueryRequest request);
    IPage<MemberCoinChargeEntity> getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request);
    IPage<AdminMemberCoinWithdrawVo> getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request);
}
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -8,6 +8,7 @@
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.AdminMoneyTotalVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -76,4 +77,6 @@
     * 判断是否中奖
     */
    Integer isGoal(String num);
    IPage<AdminMoneyTotalVo> moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -1078,6 +1078,20 @@
        return dappMemberDao.selectMessageListInPage(dappMessageEntity, page);
    }
    @Override
    public IPage<MemberCoinChargeEntity> getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request) {
        Page<MemberCoinChargeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<MemberCoinChargeEntity> memberCoinChargeEntityIPage = this.baseMapper.getChargeListByDayInPage(page, memberCoinChargeEntity);
        return memberCoinChargeEntityIPage;
    }
    @Override
    public IPage<AdminMemberCoinWithdrawVo> getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) {
        Page<AdminMemberCoinWithdrawVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMemberCoinWithdrawVo> adminMemberCoinWithdrawVos = this.baseMapper.getWithDrawListByDayInPage(page, memberCoinWithdrawEntity);
        return adminMemberCoinWithdrawVos;
    }
    public String generateAsaToken(String token) {
        RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
        return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -19,9 +19,7 @@
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.BoxUtil;
import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
import cc.mrbird.febs.dapp.vo.ApiMemberWalletCoinVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import cc.mrbird.febs.dapp.vo.*;
import cc.mrbird.febs.rabbit.producer.UsdtUpdateProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
@@ -1252,6 +1250,30 @@
        }
    }
    private final MemberCoinChargeDao memberCoinChargeDao;
    @Override
    public IPage<AdminMoneyTotalVo> moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request) {
        Page<DappAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        //获取充值提现的所有日期
        IPage<AdminMoneyTotalVo> adminMoneyTotalVoIPage = dappAccountMoneyChangeDao.selectMoneyTotalInPage(record, page);
        List<AdminMoneyTotalVo> records = adminMoneyTotalVoIPage.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(AdminMoneyTotalVo adminMoneyTotalVo : records){
                Date createTime = adminMoneyTotalVo.getCreateTime();
                //每日充值统计
                AdminMemberChargeVo adminMemberChargeVos = memberCoinChargeDao.selectTotalAmountByCreateTimeAndInviteId(createTime,record.getDescription());
                adminMoneyTotalVo.setTotalCharge(adminMemberChargeVos.getTotalCharge().setScale(2,BigDecimal.ROUND_DOWN));
                adminMoneyTotalVo.setSheetIn(adminMemberChargeVos.getSheetIn());
                //每日提现统计
                AdminMemberWithdrawVo adminMemberWithdrawVo = memberCoinWithdrawDao.selectTotalAmountByCreateTimeAndInviteId(createTime,record.getDescription());
                adminMoneyTotalVo.setTotalWithdraw(adminMemberWithdrawVo.getTotalWithdraw().setScale(2,BigDecimal.ROUND_DOWN));
                adminMoneyTotalVo.setSheetOut(adminMemberWithdrawVo.getSheetOut());
            }
        }
        return adminMoneyTotalVoIPage;
    }
    public static void main(String[] args) {
        DateTime date = DateUtil.date();
src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.dapp.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AdminMemberChargeVo {
    private BigDecimal totalCharge;
    private Integer sheetIn;
}
src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.dapp.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AdminMemberWithdrawVo {
    private BigDecimal totalWithdraw;
    private Integer sheetOut;
}
src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java
New file
@@ -0,0 +1,24 @@
package cc.mrbird.febs.dapp.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class AdminMoneyTotalVo {
    //每日充值
    private BigDecimal totalCharge;
    //每日充值次数
    private Integer sheetIn;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    //每日提现
    private BigDecimal totalWithdraw;
    //每日提现次数
    private Integer sheetOut;
}
src/main/resources/application-prod.yml
@@ -2,7 +2,7 @@
  datasource:
    dynamic:
      # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗
      p6spy: false
      p6spy: true
      hikari:
        connection-timeout: 30000
        max-lifetime: 1800000
src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml
@@ -63,4 +63,38 @@
        order by a.create_time desc
    </select>
    <select id="selectMoneyTotalInPage" resultType="cc.mrbird.febs.dapp.vo.AdminMoneyTotalVo">
        SELECT
        *
        FROM
        (
        SELECT
        date_format(create_time, '%Y-%m-%d') createTime
        FROM
        member_coin_charge
        <where>
            <if test="record.description!=null and record.description!=''">
                and (member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
            </if>
        </where>
        GROUP BY
        date_format(create_time, '%Y-%m-%d')
        UNION
        SELECT
        date_format(create_time, '%Y-%m-%d') createTime
        FROM
        member_coin_withdraw
        <where>
        is_inside = 'N'
            <if test="record.description!=null and record.description!=''">
                and (member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
            </if>
        </where>
        GROUP BY
        date_format(create_time, '%Y-%m-%d')
        ) as a
        ORDER BY
        a.createTime DESC
    </select>
</mapper>
src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -289,4 +289,32 @@
        </where>
        order  by create_time desc
    </select>
    <select id="getChargeListByDayInPage" resultType="cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity">
        select
        a.*,b.username username
        from member_coin_charge a
        left join dapp_member b on b.id = a.member_id
        <where>
            date_format(a.create_time, '%Y-%m-%d')  = #{record.createTimeStr}
            <if test="record.description!=null and record.description!=''">
                and (a.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
            </if>
        </where>
        order  by a.create_time desc
    </select>
    <select id="getWithDrawListByDayInPage" resultType="cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo">
        select
        a.*,b.username username
        from member_coin_withdraw a
        left join dapp_member b on b.id = a.member_id
        <where>
            date_format(a.create_time, '%Y-%m-%d')  = #{record.createTimeStr}
            <if test="record.description!=null and record.description!=''">
                and (a.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
            </if>
        </where>
        order  by a.create_time desc
    </select>
</mapper>
src/main/resources/mapper/dapp/MemberCoinChargeDao.xml
@@ -29,4 +29,24 @@
        </if>
    </select>
    <select id="selectTotalAmountByCreateTimeAndInviteId" resultType="cc.mrbird.febs.dapp.vo.AdminMemberChargeVo">
        SELECT
            IFNULL(sum(amount),0) AS totalCharge,
            count(id) AS sheetIn
        FROM
            member_coin_charge
        WHERE
        date_format(create_time, '%Y-%m-%d')  = date_format(#{createTime}, '%Y-%m-%d')
        <if test="description !=null and description != ''">
            and member_id IN (
            SELECT
            id
            FROM
            dapp_member
            WHERE
            FIND_IN_SET(#{description}, referer_ids)
            )
        </if>
    </select>
</mapper>
src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml
@@ -39,4 +39,25 @@
            and a.is_inside = #{type}
    </select>
    <select id="selectTotalAmountByCreateTimeAndInviteId" resultType="cc.mrbird.febs.dapp.vo.AdminMemberWithdrawVo">
        SELECT
            IFNULL(sum(amount),0) AS totalWithdraw,
            count(id) AS sheetOut
        FROM
            member_coin_withdraw
        WHERE
        date_format(create_time, '%Y-%m-%d') = date_format(#{createTime}, '%Y-%m-%d')
        <if test="description !=null and description != ''">
            and member_id IN (
            SELECT
            id
            FROM
            dapp_member
            WHERE
            FIND_IN_SET(#{description}, referer_ids)
            )
        </if>
    </select>
</mapper>
src/main/resources/templates/febs/views/dapp/money-total-flow-out.html
New file
@@ -0,0 +1,62 @@
<div className="layui-fluid layui-anim febs-anim" id="febs-money-total-out-child" lay-title="每日提现">
    <div className="layui-row febs-container">
        <div className="layui-col-md12">
            <div className="layui-card">
                <div className="layui-card-body febs-table-full">
                    <table lay-filter="moneyTotalTableOutChild" lay-data="{id: 'moneyTotalTableOutChild'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<script data-th-inline="none" type="text/javascript">
    layui.use(['jquery', 'form', 'table', 'febs'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            $view = $('#febs-money-total-out-child'),
            tableIns;
        form.render();
        initTable();
        function initTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'moneyTotalTableOutChild',
                url: ctx + 'member/getOutFlowListByDay?parentId=1',
                cols: [[
                    {field: 'username', title: '用户名', minWidth: 120, align: 'left'},
                    {field: 'amount', title: '提币数量', minWidth: 120, align: 'center'},
                    {field: 'feeAmount', title: '手续费', minWidth: 120, align: 'center'},
                    {field: 'status', title: '状态',
                        templet: function (d) {
                            if (d.status === 1) {
                                return '<span>进行中</span>'
                            } else if (d.status === 2) {
                                return '<span>同意</span>'
                            }else if (d.status === 3) {
                                return '<span>拒绝</span>'
                            }else{
                                return ''
                            }
                        }, minWidth: 120, align: 'center'},
                    {field: 'address', title: '提币地址',
                        templet: function (d) {
                            if (d.isInside === 'Y') {
                                return ''
                            } else if (d.isInside === 'N') {
                                return '<span>('+d.tag+')'+d.address+'</span>'
                            }else{
                                return ''
                            }
                        }, minWidth: 300, align: 'center'},
                    {field: 'createTime', title: '提币时间', minWidth: 180, align: 'center'},
                ]]
            });
        }
    })
</script>
src/main/resources/templates/febs/views/dapp/money-total-flow.html
New file
@@ -0,0 +1,42 @@
<div className="layui-fluid layui-anim febs-anim" id="febs-money-total-child" lay-title="每日充值">
    <div className="layui-row febs-container">
        <div className="layui-col-md12">
            <div className="layui-card">
                <div className="layui-card-body febs-table-full">
                    <table lay-filter="moneyTotalTableChild" lay-data="{id: 'moneyTotalTableChild'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<script data-th-inline="none" type="text/javascript">
    layui.use(['jquery', 'form', 'table', 'febs'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            $view = $('#febs-money-total-child'),
            tableIns;
        form.render();
        initTable();
        function initTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'moneyTotalTableChild',
                url: ctx + 'member/getFlowListByDay?parentId=1',
                cols: [[
                    {field: 'username', title: '用户名', minWidth: 130},
                    {field: 'amount', title: '充值金额(USDT)', minWidth: 130},
                    {field: 'symbol', title: '币种', minWidth: 130},
                    {field: 'address', title: '地址', minWidth: 130},
                    {field: 'createTime', title: '创建时间', minWidth: 180},
                    {field: 'hash', title: '交易hash', minWidth: 130}
                ]]
            });
        }
    })
</script>
src/main/resources/templates/febs/views/dapp/money-total.html
New file
@@ -0,0 +1,121 @@
<div class="layui-fluid layui-anim febs-anim" id="febs-money-total" lay-title="每日资产总览">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
                <div class="layui-card-body febs-table-full">
                    <form class="layui-form layui-table-form" lay-filter="money-change-table-form">
                        <div class="layui-row">
                            <div class="layui-col-md10">
                                <div class="layui-form-item">
                                </div>
                            </div>
                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
                            </div>
                        </div>
                    </form>
                    <table lay-filter="moneyTotalTable" lay-data="{id: 'moneyTotalTable'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<style>
    .layui-table-cell {
        height: auto !important;
    }
</style>
<script data-th-inline="none" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
        var $ = layui.jquery,
            laydate = layui.laydate,
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            dropdown = layui.dropdown,
            $view = $('#febs-money-total'),
            $query = $view.find('#query'),
            $reset = $view.find('#reset'),
            $searchForm = $view.find('form'),
            sortObject = {field: 'createTime', type: null},
            tableIns;
        form.render();
        initTable();
        table.on('tool(moneyTotalTable)', function (obj) {
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'sheetIn') {
                febs.modal.open( '每日充值', 'dappView/amountFlow/' + data.createTime, {
                    maxmin: true,
                });
            }
            if (layEvent === 'sheetOut') {
                febs.modal.open( '每日提现', 'dappView/amountOutFlow/' + data.createTime, {
                    maxmin: true,
                });
            }
        });
        table.on('sort(moneyTotalTable)', function (obj) {
            sortObject = obj;
            tableIns.reload({
                initSort: obj,
                where: $.extend(getQueryParams(), {
                    field: obj.field,
                    order: obj.type
                })
            });
        });
        $query.on('click', function () {
            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
            tableIns.reload({where: params, page: {curr: 1}});
        });
        $reset.on('click', function () {
            $searchForm[0].reset();
            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
        });
        function initTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'moneyTotalTable',
                url: ctx + 'flow/moneyTotal',
                cols: [[
                    {field: 'createTime', title: '日期', minWidth: 100},
                    {field: 'totalCharge', title: '充值总额', minWidth: 100},
                    {title: '充值次数',
                        templet: function (d) {
                            if(d.sheetIn > 0){
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sheetIn" shiro:hasPermission="amountFlow:update">'+d.sheetIn+'次</button>'
                            }else{
                                return d.sheetIn;
                            }
                        },minWidth: 100,align:'center'},
                    {field: 'totalWithdraw', title: '提现总额', minWidth: 100},
                    {title: '提现次数',
                        templet: function (d) {
                            if(d.sheetOut > 0){
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sheetOut" shiro:hasPermission="amountOutFlow:update">'+d.sheetOut+'次</button>'
                            }else{
                                return d.sheetOut;
                            }
                        },minWidth: 100,align:'center'},
                ]]
            });
        }
        function getQueryParams() {
            // return {
            //     type: $searchForm.find("select[name='type']").val(),
            //     username: $searchForm.find('input[name="username"]').val().trim()
            // };
        }
    })
</script>
src/test/java/cc/mrbird/febs/ChainTest.java
@@ -192,16 +192,16 @@
    @Autowired
    NotionalPoolingJob notionalPoolingJob;
    @Test
    public void poolTest() {
        notionalPoolingJob.poolUsdtTrc20();
    }
//    @Test
//    public void poolTest() {
//        notionalPoolingJob.poolUsdtTrc20();
//    }
    @Autowired
    RedisUtils redisUtils;
    @Test
    public void redisTest() {
        redisUtils.setRemove("list_set", 11222);
    }
//    @Test
//    public void redisTest() {
//        redisUtils.setRemove("list_set", 11222);
//    }
}
src/test/java/cc/mrbird/febs/JunitTest.java
@@ -317,147 +317,147 @@
//        System.out.println(active);
//    }
//
    @Test
    public void updateMemberLevel(){
        Log.info("更新用户代理等级");
        DateTime date = DateUtil.date();
        //查询账户总金额大于51的有效用户
        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectByIdentity();
//        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
        if(CollUtil.isEmpty(dappMemberEntities)){
            //没有账户金额大于51,则全部为会员
            dappMemberDao.updateIdentity();
        }else{
            List<DappMemberEntity> LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode());
            List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
            List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
            List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
            List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
            List<DappMemberEntity> LEVEL_BP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
            List<DappMemberEntity> LEVEL_SP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
            List<DappMemberEntity> LEVEL_GP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
        }
    }
    private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
        List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
        if(CollUtil.isNotEmpty(dappMemberEntities)){
            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                if(ObjectUtil.isEmpty(dappMemberEntity)){
                    continue;
                }
                Long memberEntityId = dappMemberEntity.getId();
                String refererId = dappMemberEntity.getRefererId();
                String inviteId = dappMemberEntity.getInviteId();
                //是否存在三条以上的推广线路,存在才能升级,不满足则
                List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalMemberByRefererIdAndIdentity(inviteId);
                if(3 > levelMbMembers.size()){
                    dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode());
                    dappMemberDao.updateById(dappMemberEntity);
                    continue;
                }
                int identityDown = 0;
                for(DappMemberEntity dappMemberDown : levelMbMembers){
                    //下级是否存在账户总金额大于51的会员,并且代理等级为identity
                    List<DappMemberEntity> levelMbMembersDown = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(dappMemberDown.getInviteId(),identity);
                    if(CollUtil.isNotEmpty(levelMbMembersDown)){
                        identityDown = identityDown + 1;
                    }
                }
                if(identityDown >= 3){
                    //设置identityNext级别
                    dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
                }
            }
        }
        return dappMemberEntitiesNext;
    }
//    @Test
//    public void updateMemberLevel(){
//        Log.info("更新用户代理等级");
//        DateTime date = DateUtil.date();
//        //查询账户总金额大于51的有效用户
//        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectByIdentity();
////        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
//        if(CollUtil.isEmpty(dappMemberEntities)){
//            //没有账户金额大于51,则全部为会员
//            dappMemberDao.updateIdentity();
//        }else{
//            List<DappMemberEntity> LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode());
//            List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
//            List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
//            List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
//            List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
//            List<DappMemberEntity> LEVEL_BP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
//            List<DappMemberEntity> LEVEL_SP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
//            List<DappMemberEntity> LEVEL_GP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
//        }
//    }
//
    @Test
    public void testProfitSharing(){
        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(3220L);
        if(ObjectUtil.isEmpty(igtOnHookPlanOrder)){
            return;
        }
        Long memberId = igtOnHookPlanOrder.getMemberId();
        BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
        if(ObjectUtil.isEmpty(dappMemberEntity)){
            return;
        }
        //避免重复
        QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
        List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
        if(CollUtil.isNotEmpty(dappOnHookDones)){
            return;
        }
        //生成记录
        DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
        dappOnHookDoneDao.insert(dappOnHookDone);
        //获取收益率
        DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
        String identityDicValue = identityDic.getValue();
        JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
        BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
                .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
        //获取收益
        //获取当前用户每分钟应该获取的收益
        BigDecimal multiply = hangingRevenueLevel.multiply(planAmount);
        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
        //挂机总时长(分钟)
        BigDecimal maxHours = new BigDecimal(maxHoursDic.getValue()).multiply(new BigDecimal(60));
        //得到每分钟的收益
        BigDecimal minuteProfit = multiply.divide(maxHours, 4, BigDecimal.ROUND_DOWN);
        //获取挂机开始时间到现在的总时长(分钟数)
        Date startTime = igtOnHookPlanOrder.getStartTime();
        long between = DateUtil.between(startTime, DateUtil.date(), DateUnit.MINUTE);
        //获得总收益
        BigDecimal totalProfit = minuteProfit.multiply(new BigDecimal(between)).setScale(4,BigDecimal.ROUND_DOWN);
//        BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
        String refererIds = dappMemberEntity.getRefererIds();
        List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
        //只有上级用户金额大于51U才能得到对应的佣金
//        ArrayList<String> refererIdLisstUp = new ArrayList<>();
//        for(String inviteId : refererIdList){
//            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
//            if(ObjectUtil.isNotEmpty(dappMemberUp)){
//                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(dappMemberUp.getId());
//                if(AppContants.ONHOOK_BASIC_AMOUNT.compareTo(dappWalletCoinEntity.getAvailableAmount())<=0){
//                    refererIdLisstUp.add(inviteId);
//    private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
//        List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
//        if(CollUtil.isNotEmpty(dappMemberEntities)){
//            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
//                if(ObjectUtil.isEmpty(dappMemberEntity)){
//                    continue;
//                }
//                Long memberEntityId = dappMemberEntity.getId();
//                String refererId = dappMemberEntity.getRefererId();
//                String inviteId = dappMemberEntity.getInviteId();
//                //是否存在三条以上的推广线路,存在才能升级,不满足则
//                List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalMemberByRefererIdAndIdentity(inviteId);
//                if(3 > levelMbMembers.size()){
//                    dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode());
//                    dappMemberDao.updateById(dappMemberEntity);
//                    continue;
//                }
//                int identityDown = 0;
//                for(DappMemberEntity dappMemberDown : levelMbMembers){
//                    //下级是否存在账户总金额大于51的会员,并且代理等级为identity
//                    List<DappMemberEntity> levelMbMembersDown = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(dappMemberDown.getInviteId(),identity);
//                    if(CollUtil.isNotEmpty(levelMbMembersDown)){
//                        identityDown = identityDown + 1;
//                    }
//
//                }
//                if(identityDown >= 3){
//                    //设置identityNext级别
//                    dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
//                }
//            }
//        }
        //生成流水佣金和盈利分成和流水记录,返回剩余盈利
        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
        //平台分成
        //平台拿走35%盈利分成和流水佣金剩下的全部
        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
        BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
        //个人固定拿走60%
        totalProfit = totalProfit.multiply(new BigDecimal(0.6));
        igtOnHookPlanOrder.setState(2);
        //一次挂机剩余的全部金额
        BigDecimal totalMoney = totalProfit.add(planAmount);
        igtOnHookPlanOrder.setProfit(totalProfit);
        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
        dappMemberEntity.setIsOnHook(3);
        dappMemberDao.updateById(dappMemberEntity);
        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
        BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
        dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
        BigDecimal add = availableAmount.add(totalMoney);
        BigDecimal subtract = add.subtract(totalProfit);
        DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
        dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
    }
//        return dappMemberEntitiesNext;
//    }
////
//    @Test
//    public void testProfitSharing(){
//        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(3220L);
//        if(ObjectUtil.isEmpty(igtOnHookPlanOrder)){
//            return;
//        }
//        Long memberId = igtOnHookPlanOrder.getMemberId();
//        BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
//
//        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
//        if(ObjectUtil.isEmpty(dappMemberEntity)){
//            return;
//        }
//        //避免重复
//        QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
//        objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
//        List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
//        if(CollUtil.isNotEmpty(dappOnHookDones)){
//            return;
//        }
//        //生成记录
//        DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
//        dappOnHookDoneDao.insert(dappOnHookDone);
//        //获取收益率
//        DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
//        String identityDicValue = identityDic.getValue();
//        JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
//        BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
//                .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
//        //获取收益
//        //获取当前用户每分钟应该获取的收益
//        BigDecimal multiply = hangingRevenueLevel.multiply(planAmount);
//        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
//        //挂机总时长(分钟)
//        BigDecimal maxHours = new BigDecimal(maxHoursDic.getValue()).multiply(new BigDecimal(60));
//        //得到每分钟的收益
//        BigDecimal minuteProfit = multiply.divide(maxHours, 4, BigDecimal.ROUND_DOWN);
//        //获取挂机开始时间到现在的总时长(分钟数)
//        Date startTime = igtOnHookPlanOrder.getStartTime();
//        long between = DateUtil.between(startTime, DateUtil.date(), DateUnit.MINUTE);
//        //获得总收益
//        BigDecimal totalProfit = minuteProfit.multiply(new BigDecimal(between)).setScale(4,BigDecimal.ROUND_DOWN);
////        BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
//
//        String refererIds = dappMemberEntity.getRefererIds();
//        List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
//        //只有上级用户金额大于51U才能得到对应的佣金
////        ArrayList<String> refererIdLisstUp = new ArrayList<>();
////        for(String inviteId : refererIdList){
////            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
////            if(ObjectUtil.isNotEmpty(dappMemberUp)){
////                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(dappMemberUp.getId());
////                if(AppContants.ONHOOK_BASIC_AMOUNT.compareTo(dappWalletCoinEntity.getAvailableAmount())<=0){
////                    refererIdLisstUp.add(inviteId);
////                }
////            }
////        }
//        //生成流水佣金和盈利分成和流水记录,返回剩余盈利
//        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
//        //平台分成
//        //平台拿走35%盈利分成和流水佣金剩下的全部
//        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
//        BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
//        //个人固定拿走60%
//        totalProfit = totalProfit.multiply(new BigDecimal(0.6));
//        igtOnHookPlanOrder.setState(2);
//        //一次挂机剩余的全部金额
//        BigDecimal totalMoney = totalProfit.add(planAmount);
//
//        igtOnHookPlanOrder.setProfit(totalProfit);
//        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
//        dappMemberEntity.setIsOnHook(3);
//        dappMemberDao.updateById(dappMemberEntity);
//
//        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
//        BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
//        dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
//
//        BigDecimal add = availableAmount.add(totalMoney);
//        BigDecimal subtract = add.subtract(totalProfit);
//        DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
//        dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
//
//    }
//
//    @Test
//    public void createAwardInfo(){