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(){